diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index da26a1f..f5c8e72 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -17,7 +17,7 @@ permissions: jobs: dependency-review: - runs-on: ubuntu-latest + runs-on: ubuntu-slim steps: - name: "Checkout Repository" uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd diff --git a/README.md b/README.md index 19d97cc..5e510b8 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,9 @@ Pull requests to `main` are also validated in CI with formatting checks, `astro ## Project Structure -``` +```text . -├── astro.config.mjs # Astro, Starlight, sidebar, social links, redirects +├── astro.config.mjs # Astro, Starlight, sidebar, and social links ├── markdoc.config.mjs # Starlight Markdoc integration ├── public/ # Static files copied as-is src/ @@ -73,7 +73,7 @@ Prefer absolute internal links with trailing slashes, for example: [Installation](/getting-started/installation/) ``` -When routes move, update internal links to the new route. Keep legacy redirects in `astro.config.mjs` when an old public docs URL should continue to work. +When routes move, update internal links to the new route. If an old public docs URL should keep working, add a redirect in `astro.config.mjs` (see the [Astro redirects reference](https://docs.astro.build/en/reference/configuration-reference/#redirects)). ## Images and Assets @@ -93,10 +93,6 @@ The sidebar is configured in `astro.config.mjs`. Some sections are autogenerated from folders, while larger sections use explicit ordering so the sidebar remains predictable. When adding a new page, check whether the section uses `autogenerate` or a manually listed item. -## Redirects - -`astro.config.mjs` includes redirects from older documentation routes to the current Starlight routes. Do not remove these just because the old route is no longer present in `src/content/docs/`; they preserve inbound links from the previous docs site. - ## Deployment The production build outputs static files to `dist/`. diff --git a/src/content/docs/admin-guide/company.mdoc b/src/content/docs/admin-guide/company.mdoc index 7c5d565..94a8fda 100644 --- a/src/content/docs/admin-guide/company.mdoc +++ b/src/content/docs/admin-guide/company.mdoc @@ -51,7 +51,7 @@ Configure the rest of your business profile in the same area: Set the default signature appended to system emails: -``` +```text -- Best regards, The Example Company Team diff --git a/src/content/docs/admin-guide/config.mdoc b/src/content/docs/admin-guide/config.mdoc index d8728e4..23e88cc 100644 --- a/src/content/docs/admin-guide/config.mdoc +++ b/src/content/docs/admin-guide/config.mdoc @@ -177,10 +177,12 @@ DB_PORT=3306 # Override database port ## Making Changes +{% steps %} 1. Edit `config.php` with a text editor 2. Save the file 3. Clear the cache: **System → Tools → Clear cache** (or delete `/data/cache/`) 4. Test your changes +{% /steps %} {% aside type="caution" %} Always back up `config.php` before making changes. A syntax error will break your installation. diff --git a/src/content/docs/admin-guide/custom-payment-gateway.mdoc b/src/content/docs/admin-guide/custom-payment-gateway.mdoc index 1d31b6c..f38d46f 100644 --- a/src/content/docs/admin-guide/custom-payment-gateway.mdoc +++ b/src/content/docs/admin-guide/custom-payment-gateway.mdoc @@ -70,16 +70,16 @@ Only trusted administrators should edit Custom gateway templates. Do not paste s ## Example: Different instructions by currency ```twig -{ percent if invoice.currency == 'EUR' percent } +{% if invoice.currency == 'EUR' %\}

Transfer to IBAN: DE00 0000 0000 0000 0000 00

-{ percent elseif invoice.currency == 'USD' percent } +{% elseif invoice.currency == 'USD' %\}

Transfer to account 1234567890, routing 021000021.

-{ percent else percent } +{% else %\}

Contact support for {{ invoice.currency }} payment instructions.

-{ percent endif percent } +{% endif %\} ``` -Replace `{ percent` with `{%` and `percent }` with `%}` when adding the template in FOSSBilling. +Remove the backslashes when using this template in FOSSBilling. ## Supported template syntax @@ -91,12 +91,14 @@ Do not use advanced Twig features such as importing templates, including templat After confirming the payment: +{% steps %} 1. Go to **Invoicing → Invoices**. 2. Open the relevant invoice. 3. Use **Mark as paid**. 4. Select the Custom gateway if needed. 5. Enter a transaction ID or payment reference. 6. Choose whether FOSSBilling should execute the related invoice tasks. +{% /steps %} The transaction ID is required when marking an invoice as paid through the Custom gateway. diff --git a/src/content/docs/admin-guide/email-templates.mdoc b/src/content/docs/admin-guide/email-templates.mdoc index 91b4ab4..e2674cd 100644 --- a/src/content/docs/admin-guide/email-templates.mdoc +++ b/src/content/docs/admin-guide/email-templates.mdoc @@ -48,13 +48,13 @@ See [Twig Filters & Functions](/extensions-and-development/twig-filters/) for al Default templates use Markdown for simple formatting. Wrap your content with the `apply markdown_to_html` filter: ```twig -\{% apply markdown_to_html %\} -Hi \{\{ staff.name \}\}, +{% apply markdown_to_html %\} +Hi {{ staff.name }}, If you are reading this email, FOSSBilling is **configured properly** and is **able to send emails**. -\{\{ guest.system_company.signature \}\} -\{% endapply %\} +{{ guest.system_company.signature }} +{% endapply %\} ``` Remove the backslashes when using this in your actual template. diff --git a/src/content/docs/admin-guide/invoice-pdf.mdoc b/src/content/docs/admin-guide/invoice-pdf.mdoc index a961ced..e01ded8 100644 --- a/src/content/docs/admin-guide/invoice-pdf.mdoc +++ b/src/content/docs/admin-guide/invoice-pdf.mdoc @@ -24,8 +24,10 @@ Table cells can't span pages. Keep table rows compact enough to fit on one page. ### Creating a Custom Stylesheet +{% steps %} 1. Copy `/modules/Invoice/templates/pdf/default-invoice.css` 2. Paste as `/modules/Invoice/templates/pdf/custom-invoice.css` +{% /steps %} FOSSBilling automatically uses `custom-invoice.css` if it exists. @@ -55,8 +57,10 @@ Customize the HTML structure by adding a custom Twig template. ### Creating a Custom Template +{% steps %} 1. Copy `/modules/Invoice/templates/pdf/default-invoice.twig` 2. Paste as `/modules/Invoice/templates/pdf/custom-invoice.twig` +{% /steps %} FOSSBilling uses `custom-invoice.twig` automatically. @@ -82,14 +86,14 @@ The PDF renderer does not provide top-level `client`, `company`, or `currency` v ```twig
- {\% if logo_source %\} + {% if logo_source %\} {{ seller['Name']|default(seller['Company']|default('Company logo'|trans)) }} - {\% endif %\} + {% endif %\}

{{ 'Invoice'|trans }} #{{ invoice.serie_nr }}

``` -(Remove backslashes in actual template code; they are used here to prevent rendering in this documentation.) +Remove backslashes in actual template code. ### Twig Filters @@ -103,10 +107,12 @@ PDF templates support the same [Twig filters](/extensions-and-development/twig-f ## Testing Changes +{% steps %} 1. Make your edits to `custom-invoice.css` or `custom-invoice.twig` 2. Generate a test invoice 3. Download the PDF 4. Review the output +{% /steps %} {% aside type="tip" %} Twig templates may be cached. Clear the cache (**System → Tools → Clear cache**) if template changes do not appear. diff --git a/src/content/docs/admin-guide/localization.mdoc b/src/content/docs/admin-guide/localization.mdoc index 0877e75..20a4ccc 100644 --- a/src/content/docs/admin-guide/localization.mdoc +++ b/src/content/docs/admin-guide/localization.mdoc @@ -14,13 +14,13 @@ FOSSBilling ships with translations that are at least 25% complete. To install m ### Translation Structure -``` -/locale/ -└── en_US/ - └── LC_MESSAGES/ - ├── messages.mo ← Compiled translation (required) - └── messages.po ← Source file (optional but helpful) -``` +{% filetree %} +- locale/ + - en_US/ + - LC_MESSAGES/ + - messages.mo ← Compiled translation (required) + - messages.po ← Source file (optional but helpful) +{% /filetree %} {% aside type="tip" %} Add your language to `/locale/locales.php` to show the native name in language selectors. This file is overwritten on updates, so you'll need to re-add it. @@ -38,18 +38,22 @@ Add your language to `/locale/locales.php` to show the native name in language s Don't see your language? +{% steps %} 1. Join our [Discord](https://fossbilling.org/discord) 2. Ask in `#localization` for it to be added 3. We'll add it to Crowdin 4. Start translating +{% /steps %} ### Already Have a Translation? If you've created a complete translation locally: +{% steps %} 1. Submit a pull request to the [locale repository](https://github.com/FOSSBilling/locale) 2. **Don't include the `.mo` file** — we generate those automatically 3. We'll add it to Crowdin for community contributions +{% /steps %} For assistance, ask in our [Discord](https://fossbilling.org/discord). diff --git a/src/content/docs/admin-guide/product-types/apikeys.mdoc b/src/content/docs/admin-guide/product-types/apikeys.mdoc index c4122ea..cf2ad72 100644 --- a/src/content/docs/admin-guide/product-types/apikeys.mdoc +++ b/src/content/docs/admin-guide/product-types/apikeys.mdoc @@ -1,6 +1,8 @@ --- title: API Keys description: Sell API keys for your custom applications and services. +sidebar: + order: 6 --- API key products let you sell access to your own APIs or services. After purchase, the customer receives a unique key that your application can validate against FOSSBilling. @@ -22,42 +24,45 @@ Disabling or removing this extension will delete the database table storing API ## Setting Up API Key Products -### 1. Enable the Extension +{% steps %} -Go to **Extensions** and install "API Key Product". +1. Enable the Extension -### 2. Configure Key Generation + Go to **Extensions** and install "API Key Product". -When creating the product, set these options: +2. Configure Key Generation -| Option | Default | Description | -|--------|---------|-------------| -| `Length` | 32 | Total characters in the key | -| `Split` | Enabled | Add dashes for readability | -| `Split Interval` | 8 | Characters between dashes | -| `Capitalization` | Uppercase | Uppercase, lowercase, or mixed | + When creating the product, set these options: -**Example key with default settings:** + | Option | Default | Description | + |--------|---------|-------------| + | `Length` | 32 | Total characters in the key | + | `Split` | Enabled | Add dashes for readability | + | `Split Interval` | 8 | Characters between dashes | + | `Capitalization` | Uppercase | Uppercase, lowercase, or mixed | -``` -BA907863-47C1A4F5-3CB914D3-AC927BDD -``` + **Example key with default settings:** -{% aside type="note" %} -Dashes don't count toward the key length. If you disable splitting, the key would be `BA90786347C1A4F53CB914D3AC927BDD`. -{% /aside %} + ```text + BA907863-47C1A4F5-3CB914D3-AC927BDD + ``` -### 3. Add Custom Parameters + {% aside type="note" %} + Dashes don't count toward the key length. If you disable splitting, the key would be `BA90786347C1A4F53CB914D3AC927BDD`. + {% /aside %} -You can define custom parameters attached to each API key: +3. Add Custom Parameters -- `monthlyLimit` — number of allowed requests per month -- `tier` — pricing tier (basic, pro, enterprise) -- Any other metadata your application needs + You can define custom parameters attached to each API key: -{% aside type="danger" %} -Custom parameters are retrievable by anyone with the API key. **Don't store sensitive information here.** -{% /aside %} + - `monthlyLimit` — number of allowed requests per month + - `tier` — pricing tier (basic, pro, enterprise) + - Any other metadata your application needs + + {% aside type="danger" %} + Custom parameters are retrievable by anyone with the API key. **Don't store sensitive information here.** + {% /aside %} +{% /steps %} ## API Endpoints @@ -117,7 +122,7 @@ FOSSBilling includes rate limiting on all API requests (configured via the `rate Cache validation results in your application for a few minutes. This avoids hitting rate limits and reduces server load. {% /aside %} -You can adjust rate limiting in the [configuration](/admin-guide/config#rate-limiter). +You can adjust rate limiting in the [configuration](/admin-guide/config/#rate-limiter). ## Security Considerations diff --git a/src/content/docs/admin-guide/product-types/domains.mdoc b/src/content/docs/admin-guide/product-types/domains.mdoc index 48d5eb8..98375a3 100644 --- a/src/content/docs/admin-guide/product-types/domains.mdoc +++ b/src/content/docs/admin-guide/product-types/domains.mdoc @@ -52,10 +52,12 @@ The module exists but needs fixes. [Source code](https://github.com/FOSSBilling/ ## Setting Up Domain Reselling +{% steps %} 1. Get API credentials from your chosen registrar 2. Go to **System** → **Domain registration** in FOSSBilling 3. Configure the registrar settings 4. Set up pricing for each TLD you want to sell 5. Enable the TLDs you want to offer +{% /steps %} Need a registrar that is not supported yet? See [Creating a Registrar Integration](/extensions-and-development/guides/creating-a-registrar-integration/). diff --git a/src/content/docs/admin-guide/product-types/downloadable.mdoc b/src/content/docs/admin-guide/product-types/downloadable.mdoc index b1d97fc..5a7fa6c 100644 --- a/src/content/docs/admin-guide/product-types/downloadable.mdoc +++ b/src/content/docs/admin-guide/product-types/downloadable.mdoc @@ -1,6 +1,8 @@ --- title: Downloadable Products description: Sell digital files that customers can download after purchase. +sidebar: + order: 4 --- Downloadable products let you sell digital files such as software packages, ebooks, templates, or internal documents. After checkout, the customer can download the file from their account area. @@ -21,10 +23,12 @@ Downloadable products let you sell digital files such as software packages, eboo ## Setting Up Downloadable Products +{% steps %} 1. Create a new product and select "Downloadable" as the product type 2. Upload the file(s) customers should receive 3. Configure any download limits or restrictions 4. Set up pricing and availability as normal +{% /steps %} The product will appear in your store like any other. After purchase, customers can access their downloads from the client area. diff --git a/src/content/docs/admin-guide/product-types/hosting.mdoc b/src/content/docs/admin-guide/product-types/hosting.mdoc index 14d9f94..8e012d3 100644 --- a/src/content/docs/admin-guide/product-types/hosting.mdoc +++ b/src/content/docs/admin-guide/product-types/hosting.mdoc @@ -40,10 +40,12 @@ Anything not listed above likely won't work. Check our [server managers document ## Setting Up Hosting +{% steps %} 1. Configure your server in **System** → **Hosting plans and servers** 2. Create hosting plans that match your control panel packages 3. Create products using the "Hosting" product type 4. Link them to your hosting plans +{% /steps %} See [server manager guides](/admin-guide/server-managers/) for specific setup instructions. diff --git a/src/content/docs/admin-guide/product-types/license.mdoc b/src/content/docs/admin-guide/product-types/license.mdoc index 16ce35f..cbc84a1 100644 --- a/src/content/docs/admin-guide/product-types/license.mdoc +++ b/src/content/docs/admin-guide/product-types/license.mdoc @@ -3,6 +3,7 @@ title: License description: Issue and validate software licenses for your applications. sidebar: label: Licenses + order: 5 --- The license product type lets you create and manage software licenses that your application can validate against FOSSBilling over the API. @@ -21,27 +22,29 @@ This is included with FOSSBilling but needs to be enabled from **Extensions** fi ## Setting Up License Products -### 1. Enable the Extension +{% steps %} +1. Enable the Extension + + Go to **Extensions** and install "Service License". -Go to **Extensions** and install "Service License". +2. Create a License Product -### 2. Create a License Product + When creating the product, configure these options: -When creating the product, configure these options: + | Option | Description | + |--------|-------------| + | `plugin` | Which validation plugin to use (default: `Simple`) | + | `prefix` | Optional prefix for license keys (e.g., `MYAPP-`) | + | `length` | Length of the generated key (default: 25) | + | `validate_ip` | Check the IP address | + | `validate_host` | Check the hostname | + | `validate_path` | Check the installation path | + | `validate_version` | Check the software version | -| Option | Description | -|--------|-------------| -| `plugin` | Which validation plugin to use (default: `Simple`) | -| `prefix` | Optional prefix for license keys (e.g., `MYAPP-`) | -| `length` | Length of the generated key (default: 25) | -| `validate_ip` | Check the IP address | -| `validate_host` | Check the hostname | -| `validate_path` | Check the installation path | -| `validate_version` | Check the software version | +3. Distribute and Validate -### 3. Distribute and Validate - -Give customers their license key, then have your application validate it using the API. + Give customers their license key, then have your application validate it using the API. +{% /steps %} ## API Endpoints @@ -114,7 +117,7 @@ print(response.json()) { "result": { "licensed_to": "Client Name", - "created_at": "2025-01-01 12:00:00", + "created_at": "2025-01-01T12:00:00Z", "expires_at": null, "valid": true }, @@ -184,7 +187,7 @@ class License_YourPlugin The default `Simple` plugin generates keys like: -``` +```text MYAPP-ABCD1-EFGH2-IJKL3-MNOP4 ``` diff --git a/src/content/docs/admin-guide/server-managers/cwp.mdoc b/src/content/docs/admin-guide/server-managers/cwp.mdoc index 3c4025d..45c4be5 100644 --- a/src/content/docs/admin-guide/server-managers/cwp.mdoc +++ b/src/content/docs/admin-guide/server-managers/cwp.mdoc @@ -10,6 +10,7 @@ sidebar: FOSSBilling integrates with CWP (Control-WebPanel) using its API. Here's how to set up the CWP API: +{% steps %} 1. Log in to your CWP server and navigate to **CWP Settings** → **API Manager** 2. Click **Allow new API access** 3. Give the API key a friendly name (like "FOSSBilling"), generate an API key, and enter your FOSSBilling server IP in the **IP Origin** field @@ -21,11 +22,13 @@ FOSSBilling integrates with CWP (Control-WebPanel) using its API. Here's how to - **Account Package Change**: `Update` - **Change Password**: `Update` 6. Copy the API key and save your changes +{% /steps %} For more detail, see the [CWP API documentation](https://docs.control-webpanel.com/docs/developer-tools/api-manager/configuration). ## Adding a CWP server to FOSSBilling +{% steps %} 1. Log in to your FOSSBilling admin panel 2. Go to **System** → **Hosting plans and servers** 3. Switch to the **New server** tab @@ -33,6 +36,7 @@ For more detail, see the [CWP API documentation](https://docs.control-webpanel.c 5. Select **CWP** from the **Server manager** dropdown 6. Enter the API key you created earlier 7. Click **Add server** to save +{% /steps %} ## Hosting plans with CWP and FOSSBilling diff --git a/src/content/docs/admin-guide/server-managers/hestiacp.mdoc b/src/content/docs/admin-guide/server-managers/hestiacp.mdoc index 3d1932a..9192932 100644 --- a/src/content/docs/admin-guide/server-managers/hestiacp.mdoc +++ b/src/content/docs/admin-guide/server-managers/hestiacp.mdoc @@ -24,6 +24,7 @@ When creating the access key in HestiaCP, you only need to assign "billing" perm ## Adding a HestiaCP server to FOSSBilling +{% steps %} 1. Log in to your FOSSBilling admin panel 2. Go to **System** → **Hosting plans and servers** 3. Switch to the **New server** tab @@ -31,6 +32,7 @@ When creating the access key in HestiaCP, you only need to assign "billing" perm 5. Select **HestiaCP** from the **Server manager** dropdown 6. Enter the access key ID and secret key from HestiaCP 7. Click **Add server** to save +{% /steps %} ## Hosting plans with HestiaCP and FOSSBilling diff --git a/src/content/docs/admin-guide/server-managers/others.mdoc b/src/content/docs/admin-guide/server-managers/others.mdoc index c057fc1..c26df85 100644 --- a/src/content/docs/admin-guide/server-managers/others.mdoc +++ b/src/content/docs/admin-guide/server-managers/others.mdoc @@ -21,10 +21,6 @@ Right now, the project is focused on stability and improving the core hosting wo Want to help? Check out our guide on [creating a server manager](/extensions-and-development/guides/creating-a-server-manager/). -## Proxmox VE - -There is active work on a Proxmox module for FOSSBilling, but it is not ready for production use. If you want to follow or contribute to that effort, see the [GitHub repository](https://github.com/FOSSBilling/Proxmox). - ## Frequently Requested See [this GitHub issue](https://github.com/FOSSBilling/FOSSBilling/issues/1362) for a list of server managers the community has requested. diff --git a/src/content/docs/admin-guide/server-managers/whm.mdoc b/src/content/docs/admin-guide/server-managers/whm.mdoc index 27b1f96..0a1d638 100644 --- a/src/content/docs/admin-guide/server-managers/whm.mdoc +++ b/src/content/docs/admin-guide/server-managers/whm.mdoc @@ -10,17 +10,20 @@ sidebar: FOSSBilling connects to WHM using its API. Here's how to set up an API token: +{% steps %} 1. Log in to WHM and go to **Development** → **Manage API Tokens** 2. Click **Generate Token** 3. Give the token a friendly name (like "billing") 4. Review the permissions. The defaults are usually fine, but make sure you understand the access you are granting 5. Click **Save** 6. **Important:** Copy the token now — WHM won't show it to you again +{% /steps %} Need more help? See the [WHM API documentation](https://docs.cpanel.net/whm/development/manage-api-tokens-in-whm/). ## Adding a WHM server to FOSSBilling +{% steps %} 1. Log in to your FOSSBilling admin panel 2. Go to **System** → **Hosting plans and servers** 3. Switch to the **New server** tab @@ -29,6 +32,7 @@ Need more help? See the [WHM API documentation](https://docs.cpanel.net/whm/deve 6. Enter the WHM **root** username (not the API token name) 7. Paste the API token you created earlier 8. Click **Add server** to save +{% /steps %} ## Hosting plans with WHM and FOSSBilling diff --git a/src/content/docs/extensions-and-development/api.mdoc b/src/content/docs/extensions-and-development/api.mdoc index b227ccc..4aeab1e 100644 --- a/src/content/docs/extensions-and-development/api.mdoc +++ b/src/content/docs/extensions-and-development/api.mdoc @@ -174,7 +174,7 @@ fetch(url, { ### Endpoint Structure -``` +```text /api/{role}/{module}/{action} ``` @@ -190,7 +190,3 @@ List endpoints typically accept: - `per_page` — Items per page Paginated results use the `FOSSBilling\Paginator` class. - ---- - -For assistance, join our [Discord](https://fossbilling.org/discord) community. diff --git a/src/content/docs/extensions-and-development/code-of-conduct.mdoc b/src/content/docs/extensions-and-development/code-of-conduct.mdoc deleted file mode 100644 index 3718c08..0000000 --- a/src/content/docs/extensions-and-development/code-of-conduct.mdoc +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Contributor Covenant Code of Conduct -description: Our community guidelines and expectations for contributors. ---- - -## Our Pledge - -We pledge to make participation in our community a harassment-free experience for everyone, regardless of: - -- Age, body size, disability (visible or invisible) -- Ethnicity, gender identity and expression -- Level of experience, education, socioeconomic status -- Nationality, personal appearance, race, religion -- Sexual identity and orientation - -We strive for an open, welcoming, diverse, inclusive, and healthy community. - -## Our Standards - -**Positive behaviors:** - -- Show empathy and kindness -- Respect differing opinions and experiences -- Give and accept constructive feedback gracefully -- Take responsibility and learn from mistakes -- Focus on what's best for the community - -**Unacceptable behaviors:** - -- Sexualized language or imagery -- Trolling, insults, personal attacks, or political attacks -- Public or private harassment -- Publishing others' private information without permission -- Any conduct considered inappropriate in a professional setting - -## Our Responsibilities - -Maintainers clarify and enforce these standards. We may: - -- Remove, edit, or reject contributions that don't align with this code -- Temporarily or permanently ban contributors for inappropriate behavior -- Communicate reasons for moderation decisions - -## Scope - -This code applies to: -- All project spaces (GitHub, Discord, etc.) -- Public spaces when representing FOSSBilling (social media, events, etc.) - -## Enforcement - -Report issues to us on [Discord](https://fossbilling.org/discord). All reports are confidential. - -### Enforcement Guidelines - -**1. Correction** -- **Issue:** Unprofessional or unwelcome behavior -- **Action:** Private warning explaining the violation - -**2. Warning** -- **Issue:** Violation through incidents or pattern of actions -- **Action:** Warning with temporary restrictions on interactions - -**3. Temporary Ban** -- **Issue:** Serious violation or sustained inappropriate behavior -- **Action:** Temporary ban from all project spaces - -**4. Permanent Ban** -- **Issue:** Pattern of violations, harassment, or aggression -- **Action:** Permanent removal from the community - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1. diff --git a/src/content/docs/extensions-and-development/extensions.mdoc b/src/content/docs/extensions-and-development/extensions.mdoc index 1010546..e3eb837 100644 --- a/src/content/docs/extensions-and-development/extensions.mdoc +++ b/src/content/docs/extensions-and-development/extensions.mdoc @@ -11,9 +11,8 @@ Where supported, you can install listed extensions directly from within your FOS ## Payment Adapters -| **Payment Adapter** | | **Features** | **Developer** | **Status** | -| --- | --- | --- | --- | --- | -| | Single Payment | Subscriptions | | | +| Adapter | Single Payment | Subscriptions | Developer | Status | +| --- | :---: | :---: | --- | --- | | PayPal | ✅ | ✅ | FOSSBilling | Production* | | Stripe | ✅ | ❌ | FOSSBilling | Production* | | Razorpay | ✅ | ❌ | [Albinvar](https://github.com/albinvar/Razorpay-FOSSBilling) | Production* | @@ -32,9 +31,8 @@ Building your own adapter? Start with [Creating a Payment Gateway](/extensions-a ## Registrar Modules -| **Registrar Module** | **Developer** | **Status** | +| Module | Developer | Status | | --- | --- | --- | -| | | | | EPP Registrar Module | [Namingo](https://github.com/getnamingo/fossbilling-epp-registrar) | Production* | | NETIM Registrar Module | [NETIM](https://github.com/netim-com/fossbilling-registrar-module) | Production* | diff --git a/src/content/docs/extensions-and-development/file-structure.mdoc b/src/content/docs/extensions-and-development/file-structure.mdoc index f2c4931..1b13133 100644 --- a/src/content/docs/extensions-and-development/file-structure.mdoc +++ b/src/content/docs/extensions-and-development/file-structure.mdoc @@ -113,23 +113,23 @@ All modules live here. Each module is a self-contained unit of functionality. A typical module structure: -``` -ModuleName/ -├── Api/ -│ ├── Admin.php # Admin API endpoints -│ ├── Client.php # Client API endpoints -│ └── Guest.php # Guest/public API endpoints -├── Controller/ -│ ├── Admin.php # Admin routes/controllers -│ ├── Client.php # Client routes/controllers -│ └── Guest.php # Guest routes/controllers -├── templates/ # Module templates -│ ├── admin/ # Admin panel templates -│ ├── client/ # Client area templates -│ └── email/ # Email templates -├── manifest.json # Module metadata -└── Service.php # Business logic -``` +{% filetree %} +- ModuleName/ + - Api/ + - Admin.php # Admin API endpoints + - Client.php # Client API endpoints + - Guest.php # Guest/public API endpoints + - Controller/ + - Admin.php # Admin routes/controllers + - Client.php # Client routes/controllers + - Guest.php # Guest routes/controllers + - templates/ # Module templates + - admin/ # Admin panel templates + - client/ # Client area templates + - email/ # Email templates + - manifest.json # Module metadata + - Service.php # Business logic +{% /filetree %} [Guide: Creating a Module](/extensions-and-development/guides/creating-a-module/) @@ -139,21 +139,17 @@ All installed themes. Theme structure: -``` -theme-name/ -├── assets/ # CSS, JS, images (built via esbuild) -│ └── build/ # Generated theme assets and manifest -├── config/ -│ └── settings.html.twig # Theme settings UI -├── html/ # Twig templates -├── html_custom/ # User overrides (overrides take priority) -└── manifest.json # Theme metadata -``` +{% filetree %} +- theme-name/ + - assets/ CSS, JS, images (built via esbuild) + - build/ Generated theme assets and manifest + - config/ + - settings.html.twig Theme settings UI + - html/ Twig templates + - html_custom/ User overrides (overrides take priority) + - manifest.json Theme metadata +{% /filetree %} The `html_custom/` folder lets users override templates without editing the theme directly. [Guide: Creating a Theme](/extensions-and-development/guides/creating-a-theme/) - ---- - -For assistance, join our [Discord community](https://fossbilling.org/discord). diff --git a/src/content/docs/extensions-and-development/guides/_breaking-changes-caution.mdoc b/src/content/docs/extensions-and-development/guides/_breaking-changes-caution.mdoc new file mode 100644 index 0000000..e396026 --- /dev/null +++ b/src/content/docs/extensions-and-development/guides/_breaking-changes-caution.mdoc @@ -0,0 +1,5 @@ +{% aside type="caution" %} +FOSSBilling is evolving quickly on the path to 1.0. Expect breaking changes in 0.x releases. We document these in the "breaking changes" section of release notes. + +These early releases let us modernize the codebase while keeping the project usable for real deployments. +{% /aside %} diff --git a/src/content/docs/extensions-and-development/guides/creating-a-module.mdoc b/src/content/docs/extensions-and-development/guides/creating-a-module.mdoc index 4f82de7..de26e6a 100644 --- a/src/content/docs/extensions-and-development/guides/creating-a-module.mdoc +++ b/src/content/docs/extensions-and-development/guides/creating-a-module.mdoc @@ -3,11 +3,7 @@ title: Creating a Module description: Build custom modules to extend FOSSBilling's functionality. --- -{% aside type="caution" %} -FOSSBilling is evolving quickly on the path to 1.0. Expect breaking changes in 0.x releases. We document these in the "breaking changes" section of release notes and add them to our [roadmap](https://github.com/orgs/FOSSBilling/projects/2) for visibility. - -These early releases let us modernize the codebase while keeping the project usable for real deployments. -{% /aside %} +{% partial file="./_breaking-changes-caution.mdoc" /%} ## Quick Overview @@ -23,7 +19,7 @@ Module names start with a capital letter: - ✅ **Valid:** `Example`, `Mynewmodule`, `Servicehosting` - ❌ **Invalid:** `example`, `MyNewModule`, `servicehosting` -See the [file structure docs](/extensions-and-development/file-structure#modules) for the complete layout. +See the [file structure docs](/extensions-and-development/file-structure/#srcmodules) for the complete layout. ## Example Module @@ -97,9 +93,9 @@ if (!$staff_service->hasPermission(null, 'example', 'delete_something')) { **Twig templates:** ```twig -{\% if has_permission('example', 'delete_something') %} +{% if has_permission('example', 'delete_something') %\} -{\% endif %} +{% endif %\} ``` Remove the backslashes when using this in your actual template. @@ -114,9 +110,9 @@ Key points: ## Getting Started +{% steps %} 1. Copy the [example module](https://github.com/FOSSBilling/example-module) 2. Rename files and update the manifest 3. Start building your functionality 4. Test in a development environment - -Join our [Discord](https://fossbilling.org/discord) if you need help. +{% /steps %} \ No newline at end of file diff --git a/src/content/docs/extensions-and-development/guides/creating-a-payment-gateway.mdoc b/src/content/docs/extensions-and-development/guides/creating-a-payment-gateway.mdoc index bcb9b5e..b309ffc 100644 --- a/src/content/docs/extensions-and-development/guides/creating-a-payment-gateway.mdoc +++ b/src/content/docs/extensions-and-development/guides/creating-a-payment-gateway.mdoc @@ -17,12 +17,12 @@ This guide walks you through building a payment gateway adapter to integrate pro Place your adapter in: -``` -src/library/Payment/Adapter/ -├── MyGateway.php # Single file -└── MyGateway/ - └── MyGateway.php # Or subdirectory for complex gateways -``` +{% filetree %} +- library/Payment/Adapter/ + - MyGateway.php # Single file + - MyGateway/ + - MyGateway.php # Or subdirectory for complex gateways +{% /filetree %} ### Naming @@ -156,10 +156,12 @@ FOSSBilling injects these into `$this->config`: ## Testing +{% steps %} 1. Enable test mode in the admin panel 2. Create a test invoice 3. Check **Invoicing → Transactions** for results 4. Test the full flow: payment → verification → invoice marking +{% /steps %} ## Examples diff --git a/src/content/docs/extensions-and-development/guides/creating-a-registrar-integration.mdoc b/src/content/docs/extensions-and-development/guides/creating-a-registrar-integration.mdoc index 60cbcd3..3f8856c 100644 --- a/src/content/docs/extensions-and-development/guides/creating-a-registrar-integration.mdoc +++ b/src/content/docs/extensions-and-development/guides/creating-a-registrar-integration.mdoc @@ -3,9 +3,7 @@ title: Creating a Registrar Integration description: Build domain registrar adapters for FOSSBilling. --- -{% aside type="caution" %} -FOSSBilling is evolving quickly on the path to 1.0. Expect breaking changes in 0.x releases. We document these in the "breaking changes" section of release notes. -{% /aside %} +{% partial file="./_breaking-changes-caution.mdoc" /%} Registrar adapters let FOSSBilling communicate with domain registrars to register, transfer, and manage domains on behalf of your customers. @@ -13,10 +11,10 @@ Registrar adapters let FOSSBilling communicate with domain registrars to registe Place your adapter in: -``` -src/library/Registrar/Adapter/ -└── YourRegistrar.php -``` +{% filetree %} +- library/Registrar/Adapter/ + - YourRegistrar.php +{% /filetree %} Your class must extend `Registrar_AdapterAbstract` and implement its required methods. @@ -99,11 +97,13 @@ class Registrar_Adapter_YourRegistrar extends Registrar_AdapterAbstract ## Testing Your Adapter +{% steps %} 1. Create a test domain product in FOSSBilling 2. Configure your registrar adapter in **System → Domain registration** 3. Test domain availability checks 4. Test registration (if possible with registrar's test environment) 5. Verify contact information syncing +{% /steps %} ## Resources diff --git a/src/content/docs/extensions-and-development/guides/creating-a-server-manager.mdoc b/src/content/docs/extensions-and-development/guides/creating-a-server-manager.mdoc index 2284d3a..dcea36d 100644 --- a/src/content/docs/extensions-and-development/guides/creating-a-server-manager.mdoc +++ b/src/content/docs/extensions-and-development/guides/creating-a-server-manager.mdoc @@ -3,9 +3,7 @@ title: Creating a Server Manager description: Build control panel integrations for automatic hosting provisioning. --- -{% aside type="caution" %} -FOSSBilling is evolving quickly on the path to 1.0. Expect breaking changes in 0.x releases. We document these in the "breaking changes" section of release notes. -{% /aside %} +{% partial file="./_breaking-changes-caution.mdoc" /%} Server managers connect FOSSBilling to hosting control panels (cPanel, Plesk, DirectAdmin, etc.), enabling automatic account creation, suspension, and management. @@ -17,10 +15,10 @@ These are for shared hosting control panels. For VPS or game servers, consider c Place your manager in: -``` -src/library/Server/Manager/ -└── YourManager.php -``` +{% filetree %} +- library/Server/Manager/ + - YourManager.php +{% /filetree %} Extend `Server_Manager` and implement the required methods. @@ -149,12 +147,14 @@ class Server_Manager_YourManager extends Server_Manager ## Testing Your Manager +{% steps %} 1. Add your server in **System → Hosting plans and servers** 2. Create a hosting plan linked to your server 3. Create a hosting product using that plan 4. Place a test order 5. Verify account creation in the control panel 6. Test suspend, unsuspend, and cancellation +{% /steps %} ## Resources diff --git a/src/content/docs/extensions-and-development/guides/creating-a-theme.mdoc b/src/content/docs/extensions-and-development/guides/creating-a-theme.mdoc index c2c9600..1f0231c 100644 --- a/src/content/docs/extensions-and-development/guides/creating-a-theme.mdoc +++ b/src/content/docs/extensions-and-development/guides/creating-a-theme.mdoc @@ -3,9 +3,7 @@ title: Creating a Theme description: Design and build custom themes for FOSSBilling. --- -{% aside type="caution" %} -FOSSBilling is evolving quickly on the path to 1.0. Expect breaking changes in 0.x releases. We document these in the "breaking changes" section of release notes. -{% /aside %} +{% partial file="./_breaking-changes-caution.mdoc" /%} ## How Themes Work @@ -25,23 +23,23 @@ FOSSBilling loads templates in this order (highest priority first): ## Theme Structure -``` -themes/mytheme/ -├── assets/ # CSS, JS, images (built via esbuild) -│ ├── css/ -│ ├── js/ -│ ├── img/ -│ └── build/ # Generated assets and manifest -├── config/ -│ └── settings.html.twig # Theme settings UI (optional) -├── html/ # Your templates -│ ├── layout_default.html.twig # Base layout -│ ├── layout_public.html.twig # Public pages layout -│ ├── partial_menu.html.twig # Shared partial -│ └── mod_index_dashboard.html.twig # Optional module override -├── html_custom/ # For user customizations (leave empty) -└── manifest.json # Theme metadata -``` +{% filetree %} +- themes/mytheme/ + - assets/ CSS, JS, images (built via esbuild) + - css/ + - js/ + - img/ + - build/ Generated assets and manifest + - config/ + - settings.html.twig Theme settings UI (optional) + - html/ Your templates + - layout_default.html.twig Base layout + - layout_public.html.twig Public pages layout + - partial_menu.html.twig Shared partial + - mod_index_dashboard.html.twig Optional module override + - html_custom/ For user customizations (leave empty) + - manifest.json Theme metadata +{% /filetree %} ## Manifest File @@ -98,8 +96,7 @@ The `guest`, `client`, and `admin` Twig globals call FOSSBilling APIs during ser ### Guest API (always available) ```twig -{{ guest.currency_get_pairs }} -{{ guest.system_version }} +{{ guest.currency_get_pairs() }} ``` ### Client API (when logged in) @@ -111,13 +108,13 @@ The `guest`, `client`, and `admin` Twig globals call FOSSBilling APIs during ser ### Admin API (when logged in) ```twig -{{ admin.staff_group_get_pairs }} +{{ admin.staff_group_get_pairs() }} {{ admin.extension_config_get({ 'ext': 'mod_seo' }) }} ``` ## Twig Filters and Functions -FOSSBilling provides [custom filters](/extensions-and-development/twig-filters) for themes: +FOSSBilling provides [custom filters](/extensions-and-development/twig-filters/) for themes: ```twig {{ price | format_currency(currency.code) }} {# Format currency #} @@ -143,18 +140,20 @@ Custom layouts that do not extend the bundled themes should load the shared runt - Use `fb_api_form` and `fb_api_link` for browser API actions - Include CSRF tokens manually for raw requests that do not use the wrapper - Include the [antispam honeypot](/admin-guide/anti-spam/#honeypot-protection) field in custom signup or public submission forms -- See the [security docs](/security/securing-fossbilling) for more +- See the [security docs](/security/securing-fossbilling/) for more ## Testing Your Theme +{% steps %} 1. Place your theme in `/themes/mytheme/` 2. Go to **Settings → Themes** in the admin panel 3. Select and activate your theme 4. Check both client and admin areas 5. Test on different screen sizes +{% /steps %} ## Getting Help - [Twig documentation](https://twig.symfony.com/doc/) -- [FOSSBilling Twig filters](/extensions-and-development/twig-filters) +- [FOSSBilling Twig filters](/extensions-and-development/twig-filters/) - [Discord community](https://fossbilling.org/discord) diff --git a/src/content/docs/extensions-and-development/javascript.mdoc b/src/content/docs/extensions-and-development/javascript.mdoc index 6cdb813..833ecc0 100644 --- a/src/content/docs/extensions-and-development/javascript.mdoc +++ b/src/content/docs/extensions-and-development/javascript.mdoc @@ -51,7 +51,7 @@ The JavaScript wrapper reads the `csrf_token` cookie and sends it automatically The wrapper follows this pattern: -``` +```text API.{role}.{method}(endpoint, params, onSuccess, onError, showSpinner) ``` diff --git a/src/content/docs/getting-started/building.mdoc b/src/content/docs/getting-started/building.mdoc index 56bdc3a..4b774aa 100644 --- a/src/content/docs/getting-started/building.mdoc +++ b/src/content/docs/getting-started/building.mdoc @@ -19,6 +19,7 @@ Make sure you have: ## Build Steps +{% steps %} 1. **Clone the repository** ```bash @@ -51,6 +52,7 @@ Make sure you have: 5. **Add translations** (optional) Download the [latest translations](https://github.com/FOSSBilling/locale/releases/tag/latest) and extract to `src/locale/`, overwriting existing files. +{% /steps %} After these steps, your checkout is ready for local development or for packaging into a deployment build. diff --git a/src/content/docs/getting-started/installation.mdoc b/src/content/docs/getting-started/installation.mdoc index 70d7919..4c4b6ff 100644 --- a/src/content/docs/getting-started/installation.mdoc +++ b/src/content/docs/getting-started/installation.mdoc @@ -13,7 +13,7 @@ sidebar: ## Prerequisites - A domain or subdomain dedicated to FOSSBilling. -- A server that meets the [system requirements](/getting-started/requirements). +- A server that meets the [system requirements](/getting-started/requirements/). - A web server running a FOSSBilling-compatible configuration. ## Web Server Configuration @@ -113,31 +113,35 @@ server { ## Pre-installation Steps +{% steps %} 1. **Download FOSSBilling**: Download the latest [stable release](https://fossbilling.org/downloads) from our downloads page. 2. **Prepare your database**: Create a new MariaDB/MySQL database and a dedicated user for this installation. Keep the credentials handy for the installer. 3. **Set up SSL**: If you plan to use HTTPS, and you should, configure and verify your certificate *before* you start the installer. 4. **Configure reverse-proxy headers**: If you run behind a reverse proxy, forward the `X-Forwarded-Host` and `X-Forwarded-Proto` headers so FOSSBilling can generate the correct URLs and enforce HTTPS properly. +{% /steps %} ## Installation Steps +{% steps %} 1. **Clean your document root**: Remove placeholder files created by your control panel, such as default index pages or sample `.htaccess` files, so they do not interfere with routing. 2. **Upload and extract FOSSBilling**: Upload the release you downloaded and extract it into your document root. Your directory should look similar to this: - ``` - ├── data - ├── install - ├── library - ├── locale - ├── modules - ├── themes - ├── vendor - ├── config-sample.php - ├── cron.php - ├── di.php - ├── index.php - ├── load.php - ... - ``` + {% filetree %} + - data/ + - install/ + - library/ + - locale/ + - modules/ + - themes/ + - vendor/ + - config-sample.php + - cron.php + - di.php + - index.php + - load.php + - ... + {% /filetree %} + 3. **Launch the installer**: Visit the domain you set up for FOSSBilling. If you are using HTTPS, access it over `https://` so the application configures secure URLs automatically. {% aside type="tip" title="Seeing HTTP 500, HTTP 404, or permission errors?" %} @@ -151,6 +155,7 @@ server { 6. **Configure reverse proxy (if detected)**: If the installer detects forwarded headers from a reverse proxy, it shows a proxy configuration step where you can enable trusted proxy support and review the detected settings. Only enable this if the detected proxy is one you control and trust. 7. **Configure the default currency**: Select your currency code (e.g., `USD`, `EUR`). The price format is auto-generated; place your currency symbol before or after the `{{price}}` placeholder, for example `{{price}} USD` or `$ {{price}}`. 8. **Install**: Click install and wait for the success page to appear. +{% /steps %} {% aside type="tip" %} If installation fails, you may need to manually empty the database before retrying. diff --git a/src/content/docs/getting-started/requirements.mdoc b/src/content/docs/getting-started/requirements.mdoc index be97967..4089e11 100644 --- a/src/content/docs/getting-started/requirements.mdoc +++ b/src/content/docs/getting-started/requirements.mdoc @@ -12,7 +12,7 @@ FOSSBilling works with any of these: - **Apache** (with `mod_rewrite`) - **LiteSpeed/OpenLiteSpeed Web Server** -- **NGINX** — [see recommended config](/getting-started/installation#web-server-configuration) +- **NGINX** — [see recommended config](/getting-started/installation/#web-server-configuration) If you're using something else, you'll need to configure URL rewriting manually. Use one of our existing configurations as a reference. diff --git a/src/content/docs/index.mdoc b/src/content/docs/index.mdoc index ed866ac..c265466 100644 --- a/src/content/docs/index.mdoc +++ b/src/content/docs/index.mdoc @@ -5,7 +5,7 @@ tableOfContents: false banner: content: | 0.8.4 is here! Check out the - release notes + release notes and the 0.7 → 0.8 upgrade guide for details. --- diff --git a/src/content/docs/maintenance/Updating/0-7-to-0-8.mdoc b/src/content/docs/maintenance/Updating/0-7-to-0-8.mdoc index 9a7291a..490e8b8 100644 --- a/src/content/docs/maintenance/Updating/0-7-to-0-8.mdoc +++ b/src/content/docs/maintenance/Updating/0-7-to-0-8.mdoc @@ -148,18 +148,18 @@ The old `library_url` filter used for `{{ "Api/API.js" | library_url | script_ta Shared frontend source code has moved to a new `frontend/` directory at the repository root: -``` -frontend/ -├── core/ -│ ├── api.js # JavaScript API wrapper -│ └── fossbilling.js # Runtime helpers (message toasts, request utilities) -├── editor/ -│ └── ckeditor.js # CKEditor 5 bundle -├── styles/ -│ └── markdown.css # Markdown content styling -└── tools/ - └── esbuild-helpers.mjs # Shared build utilities -``` +{% filetree %} +- frontend/ + - core/ + - api.js JavaScript API wrapper + - fossbilling.js Runtime helpers (message toasts, request utilities) + - editor/ + - ckeditor.js CKEditor 5 bundle + - styles/ + - markdown.css Markdown content styling + - tools/ + - esbuild-helpers.mjs Shared build utilities +{% /filetree %} ### Debug Bar @@ -372,12 +372,14 @@ Gravatar has been removed. User avatars are now generated locally using DiceBear The new [Antispam module](/admin-guide/anti-spam/) enables honeypot spam prevention by default for supported forms such as signup. If you have custom signup or public submission forms, use the `antispam_honeypot` function to include honeypot fields: ```twig -{\% set honeypot = antispam_honeypot() %} -{\% if honeypot.enabled %} +{% set honeypot = antispam_honeypot() %\} +{% if honeypot.enabled %\} -{\% endif %} +{% endif %\} ``` +Remove the backslash (`\`) from the closing `%}` in your template when copying the snippet above. + ## Rate Limiter The old `api.rate_*` configuration settings have been replaced by a centralized `rate_limiter` block: diff --git a/src/content/docs/maintenance/Updating/index.mdoc b/src/content/docs/maintenance/Updating/index.mdoc index 8e997db..35d0816 100644 --- a/src/content/docs/maintenance/Updating/index.mdoc +++ b/src/content/docs/maintenance/Updating/index.mdoc @@ -4,6 +4,7 @@ description: Keep your FOSSBilling installation up to date with the latest featu sidebar: label: Overview order: 1 +tableOfContents: false --- {% aside type="danger" %} @@ -18,9 +19,11 @@ sidebar: For most installations, the built-in updater is the easiest option: +{% steps %} 1. Log in to your admin panel 2. Go to **System** → **Update** 3. Click to install the update +{% /steps %} FOSSBilling downloads and installs the new files, enables maintenance mode, clears the cache, and logs you out. After logging back in, you will be prompted to finalize the update. @@ -39,11 +42,13 @@ The updater follows the configured update branch, usually `release` or `preview` If you prefer to manage files yourself: +{% steps %} 1. **Back up your database and files** 2. [Download the latest release](https://fossbilling.org/downloads/stable) 3. Extract the files over your existing installation (overwrite existing files) 4. Delete the `install` folder that came with the new files 5. Log in to the admin panel and follow the finalization prompt to apply pending patches +{% /steps %} FOSSBilling will detect the new files and direct you to the finalization page. If you navigated away, go to **System** → **Update** and use **Apply Patches & Update Configuration**. diff --git a/src/content/docs/maintenance/admin-manual-reset.mdoc b/src/content/docs/maintenance/admin-manual-reset.mdoc index 89e247d..207e61b 100644 --- a/src/content/docs/maintenance/admin-manual-reset.mdoc +++ b/src/content/docs/maintenance/admin-manual-reset.mdoc @@ -12,52 +12,54 @@ Use this guide when you have lost admin access and cannot use the password reset Before making any direct database changes, create a full backup of your database. If you edit the wrong value in the `admin` row or make a mistake while saving changes, you could cause irreversible data loss or lock yourself out completely. {% /aside %} -## Step 1: Log into phpMyAdmin +{% steps %} +1. Log into phpMyAdmin -Log in to phpMyAdmin. Not sure how? Contact your hosting provider. + Log in to phpMyAdmin. Not sure how? Contact your hosting provider. -## Step 2: Select Your Database +2. Select Your Database -Choose the database you installed FOSSBilling on. If you're not sure which one, check your `config.php` file. + Choose the database you installed FOSSBilling on. If you're not sure which one, check your `config.php` file. -## Step 3: Find the Admin Table +3. Find the Admin Table -1. Click the **Structure** tab to see all tables -2. Find and click on the **admin** table + 1. Click the **Structure** tab to see all tables + 2. Find and click on the **admin** table -![Selecting the admin table](../../../assets/guides/admin-manual-reset/pma_table.png) + ![Selecting the admin table](../../../assets/guides/admin-manual-reset/pma_table.png) -3. Click the **Browse** tab to see all admin accounts -4. Find your account and click **Edit** + 3. Click the **Browse** tab to see all admin accounts + 4. Find your account and click **Edit** -![Clicking the Edit button on your account row](../../../assets/guides/admin-manual-reset/pma_row.png) + ![Clicking the Edit button on your account row](../../../assets/guides/admin-manual-reset/pma_row.png) -## Step 4: Generate New Password Hash +4. Generate New Password Hash -{% aside type="danger" title="Security Warning" %} -Generate the hash on a machine you trust. Do not enter admin passwords into online hashing tools; they may store passwords and hashes. -{% /aside %} + {% aside type="danger" title="Security Warning" %} + Generate the hash on a machine you trust. Do not enter admin passwords into online hashing tools; they may store passwords and hashes. + {% /aside %} -The `pass` field needs a bcrypt hash. Generate one locally: + The `pass` field needs a bcrypt hash. Generate one locally: -```bash -php -r 'echo password_hash("temporary-password-here", PASSWORD_BCRYPT), PHP_EOL;' -``` + ```bash + php -r 'echo password_hash("temporary-password-here", PASSWORD_BCRYPT), PHP_EOL;' + ``` -1. Replace `temporary-password-here` with a temporary password -2. Copy the generated hash -3. Paste the hash into the **pass** field -4. Click **Go** to save + 1. Replace `temporary-password-here` with a temporary password + 2. Copy the generated hash + 3. Paste the hash into the **pass** field + 4. Click **Go** to save -![Pasting the hash and saving](../../../assets/guides/admin-manual-reset/pma_edit.png) + ![Pasting the hash and saving](../../../assets/guides/admin-manual-reset/pma_edit.png) -## Step 5: Log In and Change Your Password +5. Log In and Change Your Password -You can now log in with your temporary password. **Important:** Change it immediately to a secure password: + You can now log in with your temporary password. **Important:** Change it immediately to a secure password: -1. Click your name in the top right corner -2. Go to **Profile** -3. Switch to the **Change Password** tab -4. Set a strong, unique password + 1. Click your name in the top right corner + 2. Go to **Profile** + 3. Switch to the **Change Password** tab + 4. Set a strong, unique password -Password reset complete. Store your password securely — ideally in a password manager. + Password reset complete. Store your password securely — ideally in a password manager. +{% /steps %} diff --git a/src/content/docs/maintenance/error-reporting.mdoc b/src/content/docs/maintenance/error-reporting.mdoc index 5725f08..b419bd3 100644 --- a/src/content/docs/maintenance/error-reporting.mdoc +++ b/src/content/docs/maintenance/error-reporting.mdoc @@ -1,7 +1,7 @@ --- title: Error Reporting description: How FOSSBilling handles error reporting and what data is collected. -sidebar: +sidebar: order: 5 --- diff --git a/src/content/docs/maintenance/index.mdoc b/src/content/docs/maintenance/index.mdoc index 369b07c..0cf3b0b 100644 --- a/src/content/docs/maintenance/index.mdoc +++ b/src/content/docs/maintenance/index.mdoc @@ -1,7 +1,7 @@ --- title: Maintenance description: Keep FOSSBilling updated, healthy, and recoverable. -sidebar: +sidebar: label: Overview order: 1 tableOfContents: false diff --git a/src/content/docs/maintenance/troubleshooting.mdoc b/src/content/docs/maintenance/troubleshooting.mdoc index 308ef62..abedf5d 100644 --- a/src/content/docs/maintenance/troubleshooting.mdoc +++ b/src/content/docs/maintenance/troubleshooting.mdoc @@ -35,7 +35,7 @@ If you are using Apache, LiteSpeed, or OpenLiteSpeed and receive HTTP 404 errors ### NGINX -- Verify that you loaded the recommended [NGINX configuration](/getting-started/installation#web-server-configuration). +- Verify that you loaded the recommended [NGINX configuration](/getting-started/installation/#web-server-configuration). ## Cloudflare specific issues @@ -118,7 +118,7 @@ These steps may help you resolve this issue: 2. Try specifying a different PHP binary in the cron command, for example `php8.3` or `/usr/bin/php8.3` instead of just `php`. 3. Remove unsupported PHP versions if they keep being selected by default. 4. Ask your hosting or control-panel provider how to set a different PHP version for cron jobs. -5. As a last resort, use the [cron API endpoint](/getting-started/installation#option-2-remote-cron-service) with `wget` or an external cron service. +5. As a last resort, use the [cron API endpoint](/getting-started/installation/#configuring-the-cronjob) with `wget` or an external cron service. - Be aware that cron can run for a while. Triggering it over HTTP is more likely to hit timeout limits than running it locally. ## Administrator account login issues diff --git a/src/content/docs/security/report.mdoc b/src/content/docs/security/report.mdoc index 12b338f..f14a1b8 100644 --- a/src/content/docs/security/report.mdoc +++ b/src/content/docs/security/report.mdoc @@ -9,9 +9,11 @@ Found a security issue? **Please don't post it publicly.** Instead, follow our [ ## How to Report +{% steps %} 1. **Don't open a public issue** — this could put users at risk 2. Review our [security policy](https://github.com/FOSSBilling/FOSSBilling/security/policy) for reporting guidelines 3. Follow the responsible disclosure process outlined there +{% /steps %} We take security reports seriously and appreciate responsible disclosure. diff --git a/src/content/docs/support/features.mdoc b/src/content/docs/support/features.mdoc index ed58472..af17096 100644 --- a/src/content/docs/support/features.mdoc +++ b/src/content/docs/support/features.mdoc @@ -23,7 +23,7 @@ The `Antispam` module (replaces the old `Spamchecker` module in 0.8.0) provides | Feature | Status | Notes | |---------|--------|-------| | IP blocking | ✅ | Block problematic IPs | -| CAPTCHA | ✅ | reCaptcha v2, reCaptcha v3 (score-based), Cloudflare Turnstile and hCaptcha supported. | +| CAPTCHA | ✅ | reCAPTCHA v2, reCAPTCHA v3 (score-based), Cloudflare Turnstile and hCaptcha supported. | | Stop Forum Spam | ✅ | Community-driven spam prevention | | Disposable email blocking | ✅ | Uses [FakeFilter](https://fakefilter.net) | | MFA/2FA | 🚧 | Planned before 1.0 release |