diff --git a/docusaurus.config.js b/docusaurus.config.js index 09df746f..e4e75d32 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -11,7 +11,7 @@ module.exports = { onBrokenLinks: "throw", onBrokenMarkdownLinks: "warn", favicon: "img/controlpanel.ico", - organizationName: "ControlPanel-gg", // Usually your GitHub org/user name. + organizationName: "CtrlPanel-gg", // Usually your GitHub org/user name. projectName: "docs", // Usually your repo name. trailingSlash: false, themeConfig: { @@ -50,7 +50,7 @@ module.exports = { position: "right", }, { - href: "https://discord.gg/4Y6HjD2uyU", + href: "https://discord.gg/ctrlpanel-gg-787829714483019826", label: "Discord", position: "right", }, @@ -78,7 +78,7 @@ module.exports = { items: [ { label: "Discord", - href: "https://discord.gg/4Y6HjD2uyU", + href: "https://discord.gg/ctrlpanel-gg-787829714483019826", }, ], }, @@ -106,7 +106,7 @@ module.exports = { docs: { lastVersion: "1.0", // Please change this to your repo. - editUrl: "https://github.com/Ctrlpanel-gg/panel", + editUrl: "https://github.com/Ctrlpanel-gg/docs/tree/main", }, theme: { customCss: require.resolve("./src/css/custom.css"), diff --git a/static/img/userguides/installer-error.png b/static/img/userguides/installer-error.png deleted file mode 100644 index 0585d0c1..00000000 Binary files a/static/img/userguides/installer-error.png and /dev/null differ diff --git a/versioned_docs/version-1.0.1/Contributing/CTRLPanel Test.md b/versioned_docs/version-1.0.1/Contributing/CTRLPanel Test.md new file mode 100644 index 00000000..7f6d5c73 --- /dev/null +++ b/versioned_docs/version-1.0.1/Contributing/CTRLPanel Test.md @@ -0,0 +1,48 @@ +--- +sidebar_position: 4 +--- + +:::info + +Please only use CTRLPanel installations that are not modifyed by plugins/modules/scripts or themes. + +::: + +This repository is using the playwright framework to provide E2E to help developers of the project to speed up development and provide a more stable and secure product. +In case you wanna help by adding some tests, playwright got a awsome documentaion [here](https://playwright.dev/docs/intro) but here are some basics we already took care of so you can start right away. + +## Setup +### Requirements +- A setup version of CTRLPanel with the version you wanna test +- A admin account & a user account on this panel +- Basic knowlage of JS (or TS) +- NodeJS 18+ + +### Instructions +1: clone [this](https://github.com/Ctrlpanel-gg/ctrlpanel-tests) repo +2: run `npm install` to install modules +3: run `npx playwright install` to install playwright browsers +4: rename .env.example to .env +5: populate .env with your data +6: you are ready to go + +## Testing +### CLI +`´npx playwright test` +### UI +`npx playwright test --ui` + +## Write your own tests +### Simple rules +Because you need to be logged in for almost everything, we already took care of this. +Playwright tests are loaded by regex matches. +To create a test that runs on a user account, name it like so: +```shell +[What is the test testing].[Permissions].[What is this file].js +``` +So for example: **server.user.test.js** (Testing servers, with a user account, and its a test) +We setup a _admin_ and _user_ test env this way. + +### Make the test +Playwright comes with a codegen funktion `npx playwright codegen`. +With this its easy to get the selection of elements you want quickly and then write the test. \ No newline at end of file diff --git a/versioned_docs/version-1.0.1/Contributing/_category_.json b/versioned_docs/version-1.0.1/Contributing/_category_.json new file mode 100644 index 00000000..f0d550e1 --- /dev/null +++ b/versioned_docs/version-1.0.1/Contributing/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Contributing", + "position": 4 +} diff --git a/versioned_docs/version-1.0.1/Contributing/contributing.md b/versioned_docs/version-1.0.1/Contributing/contributing.md new file mode 100644 index 00000000..c58ac0bc --- /dev/null +++ b/versioned_docs/version-1.0.1/Contributing/contributing.md @@ -0,0 +1,43 @@ +--- +sidebar_position: 1 +--- + +# Contributing + +When contributing to this repository, please go through the open issues to see if you can contribute to something. Suppose you want to contribute something that is not in the issues; you can make an issue and wait for a response from the dev team. + +Please note, we have a code of conduct; please follow it in all your interactions with the project. + +## Pull request process + +1. Give your PR a good descriptive title to immediately view what the PR is about. +2. The dev team will look at your code and approve/merge when possible. +3. Make sure your PR follows our code of conduct and coding style. + +## Code of Conduct + +### Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +### Coding Style + +We are following the PSR12 code standard for PHP. + +### Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing other's private information, such as a physical or electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting diff --git a/versioned_docs/version-1.0.1/Contributing/donating.md b/versioned_docs/version-1.0.1/Contributing/donating.md new file mode 100644 index 00000000..0f9e6a0c --- /dev/null +++ b/versioned_docs/version-1.0.1/Contributing/donating.md @@ -0,0 +1,49 @@ +--- +sidebar_position: 2 +--- + +# Donating + +Love using ctrlpanel.gg? Support us to keep improving! 🌟 Enjoy perks like premium support & a unique Discord role! 💖
+[Patreon](https://www.patreon.com/1day2die) | [Ko-fi](https://ko-fi.com/1day2die) | [GitHub Sponsors](https://github.com/sponsors/Ctrlpanel-gg) + +Your donations go a long way in helping us develop Ctrlpanel, but please don't feel obligated to.
+I will try to mention any donation above €1- in our Discord server. + +## Donator Roles + +**Sapphire** >= 100 $/€
+**Ruby Supporter** >= 50 $/€
+**Gold Supporter** >= 25 $/€
+**Silver Supporter** >= 15 $/€
+**Bronze Supporter** >= 5 $/€
+_All Donators with a supporter role will also have access to a Donators Only channel and premium support_ + +_Please notify me when you've donated, so I can respond quicker :) **1Day2Die#6718**_ + +## Donators + +❤️ Ruby Supporter: **p47thiccbolt#4836**
+❤️ Ruby Supporter: **BolverBlitz#4881**
+❤️ Ruby Supporter: **ccrs#4120**
+❤️ Ruby Supporter: **Timo#4042**
+❤️ Ruby Supporter: **Sir Maddigan#0243**
+ +💛 Gold Supporter: **Wynn#1000**
+💛 Gold Supporter: **dragocz#0191**
+💛 Gold Supporter: **Niktix#3749** [TIX-Hosting](https://tix-hosting.net/)
+💛 Gold Supporter: **DerHorschty#3855**
+ +🤍 Silver Supporter: **TheFrodoDE#1337**
+ +🤎 Bronze Supporter: **Grosenberger#5417**
+🤎 Bronze Supporter: **ojacz#5091**
+🤎 Bronze Supporter: **Coconut#7171**
+🤎 Bronze Supporter: **Bazim#0485**
+🤎 Bronze Supporter: **Jonas.#9915**
+🤎 Bronze Supporter: **Vysoký Vagón#3796**
+🤎 Bronze Supporter: **I got 2 phones#8225**
+🤎 Bronze Supporter: **2IceCube#7992**
+🤎 Bronze Supporter: **ᴅᴏᴍɪɴɪᴋ#1005**
+🤎 Bronze Supporter: **DWAA#1660**
+🤎 Bronze Supporter: **ukcai#7121**
diff --git a/versioned_docs/version-1.0.1/Contributing/translate.md b/versioned_docs/version-1.0.1/Contributing/translate.md new file mode 100644 index 00000000..73ae727f --- /dev/null +++ b/versioned_docs/version-1.0.1/Contributing/translate.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 3 +--- + +# Translating + +You can speak your mother tongue?
+You understand a certain language very well?
+Then we need exactly **you for our translator team!**
+ +After a long wait, the Ctrlpanel has now been equipped with a translation system.
+ +_Now we need people who help us translate!_
+ +## How to help + +The Translation list can be found here + + +On this Website you will see every language we need to translate and the current progress. +Feel free to contribute or correct any language you know. + +If you have a suggestion for a language or want to bring in your skills on a certain language, feel free to contact us on discord! + +## Translators + +:de: German: **1Day2Die#0849**
+:de: German: **BolverBlitz#4881**
+:it: Italian: **Dotto#8067**
+🇨🇳 Chinese: **Wynn#1314**
+🇨🇳 Chinese: **vlssu#9657**
+🇪🇸 Spanish: **JouRambo#1734**
+🇫🇷 French: **Paulon#9413**
+🇫🇷 French: **Loulou#0088**
+🇮🇳 Hindi: **Anas.#8899**
+🇮🇳 Hindi: **Abraar#7724**
+🇳🇱 Dutch: **Finniedj.exe#9075**
+🇳🇱 Dutch: **EzedOn#6947**
+🇵🇱 Polish: **mibek1011#1318**
+🇷🇺 Russian: **Namaker#2531**
+🇸🇪 Swedish: **Vermium#9649**
+🇵🇹 Portuguese: **Ferks#7575**
diff --git a/versioned_docs/version-1.0.1/Guides/_category_.json b/versioned_docs/version-1.0.1/Guides/_category_.json new file mode 100644 index 00000000..b6d47724 --- /dev/null +++ b/versioned_docs/version-1.0.1/Guides/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Guides", + "position": 4 +} diff --git a/versioned_docs/version-1.0.1/Guides/backups.md b/versioned_docs/version-1.0.1/Guides/backups.md new file mode 100644 index 00000000..5eabd943 --- /dev/null +++ b/versioned_docs/version-1.0.1/Guides/backups.md @@ -0,0 +1,99 @@ +--- +sidebar_position: 2 +--- + +# Database backups + +:::info +Users, folders and filenames have been renamed from "controlpanel" ⇒ "ctrlpanel". Be aware that the provided commands may not fit your installation. Please change the users, folder and filenames for the commands corresponding to your installation. +::: + +All important data is stored in the database. This includes all servers, users, and other information. +It's important to keep backups of your database to ensure that you can restore your panel if something goes wrong. + +import TOCInline from '@theme/TOCInline'; + + + +## How to back up + +You can use MySQL dump to back up your database. +This command will create a backup file in the `/var/www/ctrlpanel/` folder. + +```bash +mysqldump -u root -p ctrlpanel > /var/www/ctrlpanel/backup.sql +``` + +## How to restore + +To restore a backup, you need a fresh database. If you already have a database, you can use the following command to drop it. + +:::warning + +Warning, this will delete all CtrlPanel related data! Make sure your database is backed up before continuing. + +```bash +mysql -u root -p ctrlpanel -e "DROP DATABASE ctrlpanel" +``` + +::: + +Then you can restore the backup. You can also restore the backup on any other new server. + +```bash +mysql -u root -p +CREATE DATABASE ctrlpanel; +CREATE USER 'ctrlpaneluser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; +GRANT ALL PRIVILEGES ON ctrlpanel.* TO 'ctrlpaneluser'@'127.0.0.1'; +FLUSH PRIVILEGES; +exit +mysql -u root -p ctrlpanel < /var/www/ctrlpanel/backup.sql +``` + +If you have a backup from an older version of CtrlPanel, you have to migrate the database to the latest version. + +```bash +cd /var/www/ctrlpanel +sudo php artisan migrate --seed --force +``` + +## How to automatically backup + +You can automatically back up your database every day at midnight, for example. +First, create a read only user for the database. + +```bash +mkdir -p /var/www/ctrlpanel/backups +mysql -u root -p +CREATE USER 'ctrlpanelbackupuser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; +GRANT LOCK TABLES, SELECT ON ctrlpanel.* TO 'ctrlpanelbackupuser'@'127.0.0.1'; +FLUSH PRIVILEGES; +exit +``` + +Then create a cronjob to run the following command at midnight. +Run `crontab -e` and add the following line: + +```bash +0 0 * * * mysqldump -u ctrlpanelbackupuser --password= --single-transaction --quick --lock-tables=false ctrlpanel > /var/www/ctrlpanel/backups-$(date +\%F).sql +``` + +This will create a backup at /var/www/ctrlpanel/backups-$(date +\%F).sql every day at midnight. +Every file will have the date when it was made in the filename, so you can also resolve issues that happened a few days ago. + +## Appliaction key + +The application key is used to encrypt the data in the database, if its lost you will not be able to decrypt the data in the database. + +### Backup the application key + +To backup the appliaction key you need to get it from the .env file +you can get there with this command: +```nano /var/www/ctrlpanel/.env``` +keep this key safe you will need later! + +### Restore the application key + +After you have reinstalled the panel go back into the .env +```nano /var/www/ctrlpanel/.env``` +You can then change the new key with the old key! diff --git a/versioned_docs/version-1.0.1/Guides/products.md b/versioned_docs/version-1.0.1/Guides/products.md new file mode 100644 index 00000000..98ed3da5 --- /dev/null +++ b/versioned_docs/version-1.0.1/Guides/products.md @@ -0,0 +1,32 @@ +--- +sidebar_position: 1 +--- + +# Products + +import DocusaurusImageUrl from '@site/static/img/docusaurus.png'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +With products, you can configure the resources allocated to new servers created on your panel. You can set the custom pricing and link products to specific nodes and eggs. +You can check out the pterodactyl server creation page for more information about the specific options like CPU and IO. + + + +## Product Linking + +
+Example of making a product for Minecraft servers. + +### Information + +Product linking allows you to configure the nodes and eggs this product can be a used on. +For example, you have a node that is more powerful than another node, you may most likely want to charge a bit extra for the usage of this node. +Or you may have a node dedicated for Minecraft hosting and another node for discord bots. Using the node and egg links, you can easily keep your pricing and server creation separated. + +### Hiding nodes and eggs + +You can hide specific nodes or eggs from being used by not configuring them in any of your products. This way, they won’t show up in the server creation page and therefore can’t be used by your customers. This is great if you have some nodes or eggs that you want to exclude from Ctrlpanel. + +### Tips + +If you have a well-configured product, you can use the Copy button to copy the product to create slight variations of it easily :) diff --git a/versioned_docs/version-1.0.1/Guides/themes.md b/versioned_docs/version-1.0.1/Guides/themes.md new file mode 100644 index 00000000..12733353 --- /dev/null +++ b/versioned_docs/version-1.0.1/Guides/themes.md @@ -0,0 +1,65 @@ +--- +sidebar_position: 4 +--- + +# Themes + +import DocusaurusImageUrl from '@site/static/img/docusaurus.png'; +import useBaseUrl from '@docusaurus/useBaseUrl'; + +import TOCInline from '@theme/TOCInline'; + + + +## Install a theme + +:::info +You should always follow the instructions of the theme you want to install. +::: + +Most themes are installed by placing files in the `/themes` and `/public/themes` folders. + +Then you can select the theme in your `settings > general > theme` + + +## Create a theme + +### Basic setup + +Ctrlpanel.gg uses the module [laravel-themer](https://github.com/qirolab/laravel-themer). +To start creating your own theme run the following command + +```bash +php artisan make:theme +``` + +This will ask you some basic questions and will setup a base for you to start with. + +### Bladefiles & layout + +Now you can find a copy of the original default theme files in the new folder the command above just created. +You should start by modifying those two files first because those are responsible for the main layout of the dashboard. +`/themes//views/layouts/app.blade.php` +`/themes//views/layouts/main.blade.php` + +### CSS + +You can create a new folder in `/themes//app.css` with your own custom CSS. +Import the CSS in your blade files with the following line + +```blade + +``` + +and remove the line + +```blade +@vite('themes/default/sass/app.scss') +``` + +### Sharing the theme (Optional) + +Make sure you include both the `/themes` and `/public/themes` folder and a file to guide other users on how to install your theme. +Keep the installation instructions as simple as possible and verify you didn´t forget anything, no matter how small the step might seem to you. + +You can upload your theme to our [Market](https://market.ctrlpanel.gg/) or share it however you like. diff --git a/versioned_docs/version-1.0.1/Guides/translation.md b/versioned_docs/version-1.0.1/Guides/translation.md new file mode 100644 index 00000000..4c26f17c --- /dev/null +++ b/versioned_docs/version-1.0.1/Guides/translation.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 3 +--- + +# Adding translation Files + +All translation Files can be found in this repo + + +## How to Install + +Download the needed language.json file and put it in your `/var/www/ctrlpanel/resources/lang` + +Now you need to enable the Language in your Dashboard Settings. +Go to `YOUR_DASHBOARD.com/admin/settings#Locale` and adjust your Settings accordingly. +The new Language should pop up in the selection Menu diff --git a/versioned_docs/version-1.0.1/Guides/uninstallation.md b/versioned_docs/version-1.0.1/Guides/uninstallation.md new file mode 100644 index 00000000..cc7c3ec0 --- /dev/null +++ b/versioned_docs/version-1.0.1/Guides/uninstallation.md @@ -0,0 +1,99 @@ +--- +sidebar_position: 5 +--- + +# Uninstallation + +:::info +Users, folders and filenames have been renamed from "controlpanel" ⇒ "ctrlpanel". Be aware that the provided commands may not fit your installation. Please change the users, folder and filenames for the commands corresponding to your installation. +::: + +:::warning + +You will loose all data that you have stored in your Ctrlpanel. +Note: This will only work if you followed our documentation, you might need to modify the commands to fit your installation. + +::: + +import TOCInline from '@theme/TOCInline'; + + + +## Stop everything + +You need to stop ctrlpanel and all of its services before you can uninstall it. + +```bash +cd /var/www/ctrlpanel +sudo php artisan down + +sudo systemctl stop ctrlpanel +``` + +## Remove + +### Service and cronjob + +You have to stop and remove the service and cronjob. + +```bash +sudo systemctl stop ctrlpanel +sudo systemctl disable ctrlpanel +sudo rm /etc/systemd/system/ctrlpanel.service +sudo systemctl daemon-reload +sudo systemctl reset-failed +``` + +To open the crontab run: `crontab -e` and remove the following configuration from crontab. + +```bash +* * * * * php /var/www/ctrlpanel/artisan schedule:run >> /dev/null 2>&1 +``` + +### Webconfig and SSL certificates + +You now have to remove the webconfig and restart it + +```bash +# NGINX +sudo unlink /etc/nginx/sites-enabled/ctrlpanel.conf +sudo rm /etc/nginx/sites-available/ctrlpanel.conf +sudo systemctl reload nginx +# Apache2 +sudo a2dissite ctrlpanel.conf +sudo rm /etc/apache2/sites-available/ctrlpanel.conf +sudo systemctl reload apache2 + +sudo certbot delete --cert-name +``` + +### Database and User + +You now have to remove the database and user. + +```bash +sudo mysql -u root -p -e "DROP DATABASE ctrlpanel;" +sudo mysql -u root -p -e "DROP USER 'ctrlpaneluser'@'127.0.0.1';" +sudo mysql -u root -p -e "FLUSH PRIVILEGES;" +``` + +### Files + +You now have to remove the files. + +```bash +sudo rm -rf /var/www/ctrlpanel +``` + +### Extra Dependency + +You need to uninstall this, use the appropriate PHP version (php -v) + +```bash +sudo apt remove php8.3-{intl,redis} +``` + +### Pterodactyl API Key + +Login to your pterodactyl panel and go to the admin page. +Then go to the API tab (`/admin/api`) and delete the key you made for ctrlpanel. diff --git a/versioned_docs/version-1.0.1/Installation/_category_.json b/versioned_docs/version-1.0.1/Installation/_category_.json new file mode 100644 index 00000000..e1112892 --- /dev/null +++ b/versioned_docs/version-1.0.1/Installation/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Installation", + "position": 2 +} diff --git a/versioned_docs/version-1.0.1/Installation/additional-configuration.md b/versioned_docs/version-1.0.1/Installation/additional-configuration.md new file mode 100644 index 00000000..2ec9034e --- /dev/null +++ b/versioned_docs/version-1.0.1/Installation/additional-configuration.md @@ -0,0 +1,103 @@ +--- +sidebar_position: 3 +--- + +# Additional Configuration + +import TOCInline from '@theme/TOCInline'; + + + +## Misc Configuration + +### Setup Auth + +[How](http://faq.demostoreprestashop.com/faq.php?fid=133&pid=41) to get CLIENT_ID and CLIENT_SECRET
+for the redirect URI, you have to use YOUR_WEBSITE_URL + /auth/callback (example: ) + +**Adding the Discord Bot**
+If you would like to automatically force new users to join your Discord server after they have verified, you will need to set up a Discord bot. This can be an already existing Discord bot in your server. If your bot isn't in the server yet, add it by using this: `https://discord.com/api/oauth2/authorize?client_id=&permissions=8&scope=bot`. Replace the `` with your bots client ID. + +### Setup Discord OAuth2 + +1. Go to `https://YOUR_DOMAIN_HERE/admin/settings#Discord` (replace `YOUR_DOMAIN_HERE` with your dashboard domain). +2. In the Discord section, enter the following information: + - Your bot's Token + - Your bot's Client ID + - Your bot's Client Secret + - Your Discord Guild ID (optional, but useful if you want the user to be added to your server) + - Your Discord Invite URL (optional, but useful if you want the user to be able to join into your server using the invitation link) + - Your Discord Role ID (optional, but useful if you want the verified user to receive a role on your server after verification) + - Your Discord Role ID on Purchase (optional, but useful if you want the user to get a role on your server after purchase) +3. Finally, click the "Save" button to save the changes. + +That's it! The Dashboard can now use your bot to make API calls to Discord to place new users into your Discord server. Your bot will not come online as we only use it to make API calls when someone verifies, you can still use your bot as you normally would as it won't affect the bot itself. + +### reCAPTCHA v2 + +Go to `https:///admin/settings#General` + +Ctrlpanel uses visible reCAPTCHA to secure the login page from brute-force attacks. If the login attempt is considered suspicious, users may be required to perform a reCAPTCHA challenge. + +You can generate your own keys in the [admin console](https://www.google.com/recaptcha/admin/create) + +Go to the Admin Misc settings and change the `reCAPTCHA Site Key` and `reCAPTCHA Secret Key`. Once you've updated it, press `Save`. + +**FAQ for reCAPTCHA**
+ +**Q:** It says `ERROR for site owner: Invalid site key`
+**A:** This means that you put in the incorrect site key. Double check you're using v2 and `I'm not a robot` checkbox on the reCAPTCHA create page which is found [here](https://www.google.com/recaptcha/admin/create) + +### Manual Mail Configuration + +To send out notifications and mails, you will need to configure your mail variables correctly. +You can use a free mail server; for example, from [Mailjet](https://www.mailjet.com/). You can also install your own mail server using, for example, [Mailcow](https://mailcow.email/) + +Go to `https:///admin/settings#Mail` and enter your mail credentials that you recieved from whichever provider. + +Once set run these 2 commands to ensure that emails work: + +```bash +php /var/www/ctrlpanel/artisan config:clear +php /var/www/ctrlpanel/artisan queue:restart +``` + +To test the mail configuration, you can go to the Users tab and click the notify button top right. +Select a user and choose to send via email, write some text and click submit. It may take a few minutes until it's sent. + +### Payment Configuration + +:::info + +You are able to use Paypal, Stripe, Mollie and Mercadopago as a payment option. If you want to add a different form of payment that isn't covered by those you have to add it yourself. + +::: + +#### PayPal + +To use the PayPal payment gateway, you have to set up an application on Paypal Developer Dashboard which you can find [here](https://developer.paypal.com/developer/accounts/). + +To setup Paypal payments, go to "My Apps & Credentials" and choose either "Live" for production use or "Sandbox" for testing use of PayPal. + +Create a app, give it any name you want, and copy the Client ID and the Secret. After go back to your Ctrlpanel setup and paste in the credientials into the Paypal section. If you have the Live mode on, put the Client ID and Secret in the first 2 boxes. If you have it on Sandbox, put it in the last 2 boxes. + +The only "App Feature Option" that Ctrlpanel needs is "Accept Payments". + +#### Stripe + +To use Stripe as your payment gateway, you first have to setup a "company" on Stripe's dashboard which you can find [here](https://dashboard.stripe.com/account/onboarding/business-structure) + +To setup Stripe, go to the Developer page and click on API Keys. You only need the Secret key in order to use Stripe as your payment gateway. Once you have the secret key go to your Ctrlpanel setup and paste the secret into the `Stripe Secret Key` section. + +Now, you will need to setup a Stripe Webhook in order to accept payments that are not 100% instantly confirmed by stripe (Klarna, Bank-Transfer etc.). +To do so, click on Webhooks and add an endpoint. +The endpoint route would look something like this: `https:///extensions/payment/StripeWebhooks`. Change the `` to your Ctrlpanel setup link. +Choose the `payment_intent.succeded` event to be sent to your WebhookRoute. +After the webhook creation, you need to get the endpoint secret and copy paste it to your Ctrlpanel payment settings. The endpoint secret can be found in the Webhook Overview page. + +In your Ctrlpanel setup, you need to provide a comma separated list of payment methods you want to support via Stripe. For example, `card,sepa_debit`. This includes both card and SEPA debit cards that can be used to pay. +To see the list of avaliable payment options with Stripe, read their documentation which can be found [here](https://docs.stripe.com/payments/payment-methods/payment-method-support). + +Just like Paypal, you can change it from Live to Sandbox and vice-versa in case you want to test to make sure that your payments are working correctly. + +Did something go wrong for you? We hope not, however it's very possible. If you need support, feel free to create a support thread on our [Discord](https://discord.gg/ctrlpanel-gg-787829714483019826). diff --git a/versioned_docs/version-1.0.1/Installation/getting-started.md b/versioned_docs/version-1.0.1/Installation/getting-started.md new file mode 100644 index 00000000..e47e507b --- /dev/null +++ b/versioned_docs/version-1.0.1/Installation/getting-started.md @@ -0,0 +1,538 @@ +--- +sidebar_position: 1 +--- + +# Getting started + +:::info + +It is recommended that you have some sort of Linux and MariaDB experience before installing this. +This guide requires you to already have a working pterodactyl installation. + +::: + +import TOCInline from '@theme/TOCInline'; + + + +## Dependencies + +- PHP `8.2`, `8.3` (recommended) or `8.4` with the following extensions: `cli`, `openssl`, `gd`, `mysql`, `PDO`, `mbstring`, `tokenizer`, `bcmath`, `xml` or `dom`, `curl`, `zip`, `redis`, `intl` and `fpm` if you are planning to use NGINX. +- MySQL `5.7.22` or higher (MySQL `8` recommended) **or** MariaDB `10.2` or higher. +- A web server (Apache, NGINX, etc.) +- `curl` +- `git` +- `composer` + +### Example Dependency Installation + +_If you already have Pterodactyl installed, please check that you also install PHP 8.3!_ + +The commands below are simply an example of how you might install these dependencies. Please consult with your +operating system's package manager to determine the correct packages to install. + +```bash +# Add "add-apt-repository" command +apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg + +# Add additional repositories for PHP (Ubuntu 20.04 and Ubuntu 22.04) +LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php + +# MariaDB repo setup script (Ubuntu 20.04) +curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash + +# Update repositories list +apt update + +# Install Dependencies +apt -y install php8.3 php8.3-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} mariadb-server nginx git +``` + +### Extra Dependency Used on this Dashboard + +You need to install this, use the appropriate PHP version (php -v) +Extra dependency used for handling currency's + +```bash +apt -y install php8.3-{intl,redis} +``` + +### Installing Composer + +_If you already have Pterodactyl installed, you can skip this step!_ + +Composer is a dependency manager for PHP that allows us to ship everything you'll need code wise to operate the Panel. You'll +need composer installed before continuing in this process. + +```bash +curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer +``` + +## Download Files + +The first step in this process is to create the folder where the panel will live and then move ourselves into that +newly created folder. Below is an example of how to perform this operation. + +```bash +mkdir -p /var/www/ctrlpanel && cd /var/www/ctrlpanel +``` + +```bash +git clone https://github.com/Ctrlpanel-gg/panel.git ./ +``` + +## Database Setup + +:::info +You will need a database setup and a database user with the correct permissions created for that database before +continuing any further. +::: + +To make a database and database user, you can follow this guide. +This is for MariaDB. Please change the USE_YOUR_OWN_PASSWORD part to your password. Also, 127.0.0.1 is for localhost. Please have basic knowledge of Linux before attempting this. Use at your own responsibility. + +```bash +mysql -u root -p +CREATE DATABASE ctrlpanel; +CREATE USER 'ctrlpaneluser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; +GRANT ALL PRIVILEGES ON ctrlpanel.* TO 'ctrlpaneluser'@'127.0.0.1'; +FLUSH PRIVILEGES; +EXIT; +``` + +## Installing Сomposer Packages + +First, we will have to install all composer packages. +For this, run the following command + +```bash +COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader +``` + +## Web Server Configuration + +This is a basic NGINX configuration. Please replace any `` placeholders with your domain name being used. Since NGINX is being used, we will put our configuration (`ctrlpanel.conf`) in `/etc/nginx/sites-available/`, or — if on CentOS, `/etc/nginx/conf.d/.` + +### Setting up the Web Server + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + + Before we touch anything with NGINX, we first have to generate our SSL certificates. Make sure your domain you're using for your Ctrlpanel setup has a A record pointed at your IPv4 for your machine and is not proxied. Run the following commands to start the installation for SSL. + + ```bash + sudo apt update + sudo apt install certbot + sudo apt install python3-certbot-nginx + ``` + + Once the installation is complete, you now need to generate the SSL certificates. To do so, run the following command below. Replace any `YOUR.DOMAIN.HERE` placeholders with the domain you're using for your Ctrlpanel setup. + + ```bash + certbot certonly --nginx -d YOUR.DOMAIN.HERE + ``` + + It will save all certificates to `/etc/letsencrypt/live/YOUR.DOMAIN.HERE/`. + + Now that SSL is ready to be used, let's setup NGINX. To do so, run the following command below to get rid of NGINX's default configuration and to avoid any other errors. + + ```bash + rm /etc/nginx/sites-enabled/default + ``` + + > **Note:** If you see the error that there is no such file, then most likely you have already deleted it when installing Pterodactyl + + Once done, we now have to open the NGINX configuration file. This depends on your OS. + + Debian/Ubuntu Based OSes: + + ```bash + nano /etc/nginx/sites-available/ctrlpanel.conf + ``` + + RHEL, CentOS, Rocky Linux, or AlmaLinux based OSes: + + ```bash + nano /etc/nginx/conf.d/ctrlpanel.conf + ``` + + There, you want to paste in the configuration which is stated below. Be sure to change any `YOUR.DOMAIN.HERE` placeholders with your Ctrlpanel setup. + + ```conf + server { + # Replace YOUR.DOMAIN.HERE with your domain. + listen 80; + server_name YOUR.DOMAIN.HERE; + return 301 https://$server_name$request_uri; + } + + server { + # Replace YOUR.DOMAIN.HERE with your domain. + listen 443 ssl http2; + server_name YOUR.DOMAIN.HERE; + + root /var/www/ctrlpanel/public; + index index.php; + + access_log /var/log/nginx/ctrlpanel.app-access.log; + error_log /var/log/nginx/ctrlpanel.app-error.log error; + + # Allow large upload sizes + client_max_body_size 100m; + client_body_timeout 120s; + + sendfile off; + + # SSL Configuration - Replace any YOUR.DOMAIN.HERE with the domain you're using for your Ctrlpanel setup. + ssl_certificate /etc/letsencrypt/live/YOUR.DOMAIN.HERE/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/YOUR.DOMAIN.HERE/privkey.pem; + ssl_session_cache shared:SSL:10m; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; + ssl_prefer_server_ciphers on; + + # See https://hstspreload.org/ before uncommenting the line below. + # add_header Strict-Transport-Security "max-age=15768000; preload;"; + add_header X-Content-Type-Options nosniff; + add_header X-XSS-Protection "1; mode=block"; + add_header X-Robots-Tag none; + add_header Content-Security-Policy "frame-ancestors 'self'"; + add_header X-Frame-Options DENY; + add_header Referrer-Policy same-origin; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass unix:/run/php/php8.3-fpm.sock; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M"; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTP_PROXY ""; + fastcgi_intercept_errors off; + fastcgi_buffer_size 16k; + fastcgi_buffers 4 16k; + fastcgi_connect_timeout 300; + fastcgi_send_timeout 300; + fastcgi_read_timeout 300; + include /etc/nginx/fastcgi_params; + } + + location ~ /\.ht { + deny all; + } + } + ``` + + **Enable Configuration** + + The last step is to enable the NGINX configuration. To do that, we have to restart it. + + ```bash + # You do not need to symlink this file if you are using CentOS. + sudo ln -s /etc/nginx/sites-available/ctrlpanel.conf /etc/nginx/sites-enabled/ctrlpanel.conf + + # Check for nginx errors + sudo nginx -t + + # You need to restart nginx regardless of OS. only do this you haven't received any errors + systemctl restart nginx + ``` + + + + + Before we setup the configuration, we must delete NGINX's example configuration. To do so, run the following command below. + + ```bash + rm /etc/nginx/sites-enabled/default + ``` + + Once done, we now have to open the NGINX configuration file. This depends on your OS. + + Debian/Ubuntu Based OSes: + + ```bash + nano /etc/nginx/sites-available/ctrlpanel.conf + ``` + + RHEL, CentOS, Rocky Linux, or AlmaLinux based OSes: + + ```bash + nano /etc/nginx/conf.d/ctrlpanel.conf + ``` + + There, you want to paste in the configuration which is stated below. Be sure to change any `YOUR.DOMAIN.HERE` placeholders with your Ctrlpanel setup. + + ```conf + server { + # Replace YOUR.DOMAIN.HERE with your domain. + listen 80; + server_name YOUR.DOMAIN.HERE; + + root /var/www/ctrlpanel/public; + index index.html index.htm index.php; + charset utf-8; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + + access_log off; + error_log /var/log/nginx/ctrlpanel.app-error.log error; + + # Allow larger upload sizes + client_max_body_size 100m; + client_body_timeout 120s; + + sendfile off; + + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass unix:/run/php/php8.3-fpm.sock; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param PHP_VALUE "upload_max_filesize = 100M \n post_max_size=100M"; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTP_PROXY ""; + fastcgi_intercept_errors off; + fastcgi_buffer_size 16k; + fastcgi_buffers 4 16k; + fastcgi_connect_timeout 300; + fastcgi_send_timeout 300; + fastcgi_read_timeout 300; + } + + location ~ /\.ht { + deny all; + } + } + ``` + + **Enable Configuration** + + The last step is to enable the NGINX configuration. To do that, we have to restart it. + + ```bash + # You do not need to symlink this file if you are using CentOS. + sudo ln -s /etc/nginx/sites-available/ctrlpanel.conf /etc/nginx/sites-enabled/ctrlpanel.conf + + # Check for nginx errors + sudo nginx -t + + # You need to restart nginx regardless of OS. only do this you haven't received any errors + systemctl restart nginx + ``` + + + + + Before we setup the configuration, we have to delete Apache's default configuration. Run the command below to delete it. + + ```bash + a2dissite 000-default.conf + ``` + + Once done, we now have to open the NGINX configuration file. This depends on your OS. + + Debian/Ubuntu Based OSes: + + ```bash + nano /etc/apache2/sites-available/ctrlpanel.conf + ``` + + RHEL, CentOS, Rocky Linux, or AlmaLinux based OSes: + + ```bash + nano /etc/httpd/conf.d/ctrlpanel.conf + ``` + + There, you want to paste in the configuration which is stated below. Be sure to change any `YOUR.DOMAIN.HERE` placeholders with your Ctrlpanel setup. + + ```conf + + # Replace YOUR.DOMAIN.HERE with your domain. + ServerName YOUR.DOMAIN.HERE + + RewriteEngine On + RewriteCond %{HTTPS} !=on + RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] + + + + # Replace YOUR.DOMAIN.HERE with your domain. + ServerName YOUR.DOMAIN.HERE + DocumentRoot "/var/www/ctrlpanel/public" + + AllowEncodedSlashes On + + php_value upload_max_filesize 100M + php_value post_max_size 100M + + + Require all granted + AllowOverride all + + + SSLEngine on + SSLCertificateFile /etc/letsencrypt/live/YOUR.DOMAIN.HERE/fullchain.pem + SSLCertificateKeyFile /etc/letsencrypt/live/YOUR.DOMAIN.HERE/privkey.pem + + ``` + + **Enable Configuration** + + Now that we've successfully created the configuration file for our web server, the last step is to restart it. **NOTE** This step can be skipped if your OS is based off of RHEL, Rocky Linux, or AlmaLinux. + + ```bash + # You do not need to run any of these commands on RHEL, Rocky Linux, or AlmaLinux + sudo ln -s /etc/apache2/sites-available/ctrlpanel.conf /etc/apache2/sites-enabled/ctrlpanel.conf + sudo a2enmod rewrite + sudo a2enmod ssl + sudo systemctl restart apache2 + ``` + + + + + Before we setup the configuration, we have to delete Apache's default configuration. Run the command below to delete it. + + ```bash + a2dissite 000-default.conf + ``` + + Once done, we now have to open the NGINX configuration file. This depends on your OS. + + Debian/Ubuntu Based OSes: + + ```bash + nano /etc/apache2/sites-available/ctrlpanel.conf + ``` + + RHEL, CentOS, Rocky Linux, or AlmaLinux based OSes: + + ```bash + nano /etc/httpd/conf.d/ctrlpanel.conf + ``` + + There, you want to paste in the configuration which is stated below. Be sure to change any `YOUR.DOMAIN.HERE` placeholders with your Ctrlpanel setup. + + ```conf + + # Replace YOUR.DOMAIN.HERE with your domain. + ServerName YOUR.DOMAIN.HERE + DocumentRoot "/var/www/ctrlpanel/public" + + AllowEncodedSlashes On + + php_value upload_max_filesize 100M + php_value post_max_size 100M + + + AllowOverride all + Require all granted + + + ``` + + **Enable Configuration** + + Now that we've successfully created the configuration file for our web server, the last step is to restart it. **NOTE** This step can be skipped if your OS is based off of RHEL, Rocky Linux, or AlmaLinux. + + ```bash + # You do not need to run any of these commands on RHEL, Rocky Linux, or AlmaLinux + sudo ln -s /etc/apache2/sites-available/ctrlpanel.conf /etc/apache2/sites-enabled/ctrlpanel.conf + sudo a2enmod rewrite + sudo systemctl restart apache2 + ``` + + + + +### Set Permissions + +The last step in the installation process is to set the correct permissions on the Panel files so that the web server can +use them correctly. + +```bash +# If using NGINX or Apache (not on CentOS): +chown -R www-data:www-data /var/www/ctrlpanel/ +chmod -R 755 storage/* bootstrap/cache/ + +# If using NGINX on CentOS: +chown -R nginx:nginx /var/www/ctrlpanel/ +chmod -R 755 storage/* bootstrap/cache/ + +# If using Apache on CentOS +chown -R apache:apache /var/www/ctrlpanel/ +chmod -R 755 storage/* bootstrap/cache/ + +**** +``` + +Once this is done, you should be able to access the dashboard via your web browser. + +## Queue Listeners + +### Crontab Configuration + +The first thing we need to do is create a new cron job that runs every minute to process specific Dashboard tasks such as billing users hourly and suspending unpaid servers. To setup crontab, we first have to open it. To do so, run the following command: + +```bash +crontab -e +``` + +If it prompts you for a file editor, choose number 1. Once It's opened, go to a line that doesn't have a `#` in front of it. Then paste in this: + +```bash +* * * * * php /var/www/ctrlpanel/artisan schedule:run >> /dev/null 2>&1 +``` + +### Create Queue Worker + +Next, you need to create a new systemd worker to keep our queue process running in the background. This queue is responsible for sending emails and handling many other background tasks for the Dashboard. + +Create a file called `ctrlpanel.service` in `/etc/systemd/system` with the contents below. + +```bash +# Ctrlpanel Queue Worker File +# ---------------------------------- + +[Unit] +Description=Ctrlpanel Queue Worker + +[Service] +# On some systems the user and group might be different. +# Some systems use `apache` or `nginx` as the user and group. +User=www-data +Group=www-data +Restart=always +ExecStart=/usr/bin/php /var/www/ctrlpanel/artisan queue:work --sleep=3 --tries=3 +StartLimitBurst=0 + +[Install] +WantedBy=multi-user.target +``` + +Finally, enable the service and set it to boot on machine start. + +```bash +sudo systemctl enable --now ctrlpanel.service +``` + +#### Navigate to the installer + +To begin installation, go to `https://YOUR_DOMAIN_HERE.com` and follow the installer instructions. + +If you encounter problems with the email setup, you can skip it and set it up later. + +Once the installer has been completed, you will be redirected to the login page. Sign in with your Pterodactyl username/email and the password you set during the installer. diff --git a/versioned_docs/version-1.0.1/Installation/troubleshooting.md b/versioned_docs/version-1.0.1/Installation/troubleshooting.md new file mode 100644 index 00000000..e8d709ef --- /dev/null +++ b/versioned_docs/version-1.0.1/Installation/troubleshooting.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 4 +--- + +# Troubleshooting + +We understand that you may encounter some issues on the way of setting up your dashboard, however our support is ready for you! If you need any help feel free to reach out to us on our [Discord](https://discord.gg/ctrlpanel-gg-787829714483019826). + +When contacting support, we recommend adding logs to your support thread to speed up the time it takes you to get support. How do you do that? Well, how about we scroll a bit more downwards... + +## Getting Error Logs + +If you ever face any issues, we always ask for logs to understand more about whats happening and what's the error with your setup. These logs do not contain any confidential or sensitive information and only contains error logs. There are 2 options for logs, either the recommended way which uses Pteropaste to output logs which helps us, or the advanced route which outputs the errors directly into console. + +### Hastebin Output (recommended) + +This uses a website called pteropaste that is hosted by Pterodactyl and the thing we use to send your last 100 lines of your Ctrlpanel errors. The command below will output a link which redirects to a text copy of Ctrlpanel's error log which can assist you and others with issues you're facing. Ensure that port 80 and 443 is unblocked on your network to face no issues. + +```bash +tail -n 100 /var/www/ctrlpanel/storage/logs/laravel.log | nc pteropaste.com 99 +``` + +### Text Output (advanced) + +The text output option is for more advanced users. It takes Ctrlpanel's logs and outputs them directly into console. We suggest that only advanced Linux users take this option as the output may be large in size. + +```bash +tail -n 100 /var/www/ctrlpanel/storage/logs/laravel.log +``` + +Using either option will help us help you with your issues. If you need any support regarding Ctrlpanel, create a support thread on our [Discord](https://discord.gg/ctrlpanel-gg-787829714483019826). diff --git a/versioned_docs/version-1.0.1/Installation/updating.md b/versioned_docs/version-1.0.1/Installation/updating.md new file mode 100644 index 00000000..bd2b4204 --- /dev/null +++ b/versioned_docs/version-1.0.1/Installation/updating.md @@ -0,0 +1,76 @@ +--- +sidebar_position: 5 +--- + +# Updating + +:::caution +This guide is for updates 1.0.0 -> 1.0.X + +If you want to upgrade from version 0.9.X to 1.0.1, use 1.0 docs (dropdown menu on the top right) +::: + +## Enable Maintenance Mode + +```bash +cd /var/www/ctrlpanel +sudo php artisan down +``` + +## Pulling the New Files + +```bash +sudo git stash +sudo git pull +sudo chmod -R 755 /var/www/ctrlpanel +``` + +## Update Dependencies + +```bash +sudo composer install --no-dev --optimize-autoloader +``` + +## Updating the Database + +```bash +sudo php artisan migrate --seed --force +``` + +## Clear Compiled Template Cache + +```bash +sudo php artisan view:clear +sudo php artisan config:clear +``` + +## Set Permissions + +```bash +# If using NGINX or Apache (not on CentOS): +sudo chown -R www-data:www-data /var/www/ctrlpanel/ + +# If using NGINX on CentOS: +sudo chown -R nginx:nginx /var/www/ctrlpanel/ + +# If using Apache on CentOS +sudo chown -R apache:apache /var/www/ctrlpanel/ +``` + +## Restarting Queue Workers + +After every update, you should restart the queue worker to ensure that the new code is loaded in and used. + +```bash +sudo php artisan queue:restart +``` + +## Disable Maintenance Mode + +```bash +sudo php artisan up +``` + +## Disclaimer + +If you notice any bugs 🐛 or would like something to be improved or added, let us know by making a [GitHub Issue](https://github.com/CtrlPanel-gg/panel/issues/new/choose).
**For any major security risk, create** [GitHub vulnerability report](https://github.com/Ctrlpanel-gg/panel/security/advisories/new). Avoid discussing vulnerabilities in public chats, and also do not create reports on public trackers! diff --git a/versioned_docs/version-1.0.1/intro.md b/versioned_docs/version-1.0.1/intro.md new file mode 100644 index 00000000..ed071c43 --- /dev/null +++ b/versioned_docs/version-1.0.1/intro.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 1 +--- + +# Introduction + +CtrlPanel's Dashboard is a management application designed to provide clients with an intuitive tool for managing their [Pterodactyl](https://pterodactyl.io/) servers. CtrlPanel features a flexible billing system with support for plans ranging from hourly to annual, ensuring scalability and convenience for all users. Servers are automatically suspended if users exhaust their credits. + +CtrlPanel offers a user-friendly and free billing solution tailored for both new and experienced hosting providers. With extensive customization options and Discord OAuth integration, it creates a seamless link between your Discord server and the dashboard for an enhanced user experience. + +## Installation + +You can find our guide for installation [here](Installation/getting-started). + +## Third-parties + +You can find custom themes and programs from our [Extension Hub](https://market.ctrlpanel.gg/) those are developed by third-parties. + +## Support + +Have a few questions? Feel free to [join](https://discord.gg/ctrlpanel-gg-787829714483019826) our support Discord server. + +We also announce every single release in our Discord and we would love to hear your feedback! diff --git a/versioned_docs/version-1.0/Contributing/contributing.md b/versioned_docs/version-1.0/Contributing/contributing.md index 1156c94c..c58ac0bc 100644 --- a/versioned_docs/version-1.0/Contributing/contributing.md +++ b/versioned_docs/version-1.0/Contributing/contributing.md @@ -3,6 +3,7 @@ sidebar_position: 1 --- # Contributing + When contributing to this repository, please go through the open issues to see if you can contribute to something. Suppose you want to contribute something that is not in the issues; you can make an issue and wait for a response from the dev team. Please note, we have a code of conduct; please follow it in all your interactions with the project. @@ -16,6 +17,7 @@ Please note, we have a code of conduct; please follow it in all your interaction ## Code of Conduct ### Our Pledge + In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. ### Coding Style @@ -23,6 +25,7 @@ In the interest of fostering an open and welcoming environment, we as contributo We are following the PSR12 code standard for PHP. ### Our Standards + Examples of behavior that contributes to creating a positive environment include: - Using welcoming and inclusive language diff --git a/versioned_docs/version-1.0/Contributing/donating.md b/versioned_docs/version-1.0/Contributing/donating.md index fcaac080..0f9e6a0c 100644 --- a/versioned_docs/version-1.0/Contributing/donating.md +++ b/versioned_docs/version-1.0/Contributing/donating.md @@ -3,6 +3,7 @@ sidebar_position: 2 --- # Donating + Love using ctrlpanel.gg? Support us to keep improving! 🌟 Enjoy perks like premium support & a unique Discord role! 💖
[Patreon](https://www.patreon.com/1day2die) | [Ko-fi](https://ko-fi.com/1day2die) | [GitHub Sponsors](https://github.com/sponsors/Ctrlpanel-gg) @@ -10,6 +11,7 @@ Your donations go a long way in helping us develop Ctrlpanel, but please don't f I will try to mention any donation above €1- in our Discord server. ## Donator Roles + **Sapphire** >= 100 $/€
**Ruby Supporter** >= 50 $/€
**Gold Supporter** >= 25 $/€
diff --git a/versioned_docs/version-1.0/Contributing/translate.md b/versioned_docs/version-1.0/Contributing/translate.md index 953db99f..73ae727f 100644 --- a/versioned_docs/version-1.0/Contributing/translate.md +++ b/versioned_docs/version-1.0/Contributing/translate.md @@ -15,7 +15,7 @@ _Now we need people who help us translate!_
## How to help The Translation list can be found here -https://crowdin.com/project/controlpanelgg + On this Website you will see every language we need to translate and the current progress. Feel free to contribute or correct any language you know. diff --git a/versioned_docs/version-1.0/Guides/backups.md b/versioned_docs/version-1.0/Guides/backups.md index 49287c8e..5eabd943 100644 --- a/versioned_docs/version-1.0/Guides/backups.md +++ b/versioned_docs/version-1.0/Guides/backups.md @@ -4,6 +4,10 @@ sidebar_position: 2 # Database backups +:::info +Users, folders and filenames have been renamed from "controlpanel" ⇒ "ctrlpanel". Be aware that the provided commands may not fit your installation. Please change the users, folder and filenames for the commands corresponding to your installation. +::: + All important data is stored in the database. This includes all servers, users, and other information. It's important to keep backups of your database to ensure that you can restore your panel if something goes wrong. @@ -11,24 +15,25 @@ import TOCInline from '@theme/TOCInline'; -### How to back up +## How to back up You can use MySQL dump to back up your database. -This command will create a backup file in the `/var/www/controlpanel/` folder. +This command will create a backup file in the `/var/www/ctrlpanel/` folder. ```bash -mysqldump -u root -p controlpanel > /var/www/controlpanel/backup.sql +mysqldump -u root -p ctrlpanel > /var/www/ctrlpanel/backup.sql ``` -### How to restore +## How to restore To restore a backup, you need a fresh database. If you already have a database, you can use the following command to drop it. :::warning -Warning, this will delete all Controlpanel related data! Make sure your database is backed up before continuing. +Warning, this will delete all CtrlPanel related data! Make sure your database is backed up before continuing. + ```bash -mysql -u root -p controlpanel -e "DROP DATABASE controlpanel" +mysql -u root -p ctrlpanel -e "DROP DATABASE ctrlpanel" ``` ::: @@ -37,31 +42,31 @@ Then you can restore the backup. You can also restore the backup on any other ne ```bash mysql -u root -p -CREATE DATABASE controlpanel; -CREATE USER 'controlpaneluser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; -GRANT ALL PRIVILEGES ON controlpanel.* TO 'controlpaneluser'@'127.0.0.1'; +CREATE DATABASE ctrlpanel; +CREATE USER 'ctrlpaneluser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; +GRANT ALL PRIVILEGES ON ctrlpanel.* TO 'ctrlpaneluser'@'127.0.0.1'; FLUSH PRIVILEGES; exit -mysql -u root -p controlpanel < /var/www/controlpanel/backup.sql +mysql -u root -p ctrlpanel < /var/www/ctrlpanel/backup.sql ``` -If you have a backup from an older version of ControlPanel, you have to migrate the database to the latest version. +If you have a backup from an older version of CtrlPanel, you have to migrate the database to the latest version. ```bash -cd /var/www/controlpanel +cd /var/www/ctrlpanel sudo php artisan migrate --seed --force ``` -### How to automatically backup +## How to automatically backup You can automatically back up your database every day at midnight, for example. First, create a read only user for the database. ```bash -mkdir -p /var/www/controlpanel/backups +mkdir -p /var/www/ctrlpanel/backups mysql -u root -p -CREATE USER 'controlpanelbackupuser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; -GRANT LOCK TABLES, SELECT ON controlpanel.* TO 'controlpanelbackupuser'@'127.0.0.1'; +CREATE USER 'ctrlpanelbackupuser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; +GRANT LOCK TABLES, SELECT ON ctrlpanel.* TO 'ctrlpanelbackupuser'@'127.0.0.1'; FLUSH PRIVILEGES; exit ``` @@ -70,22 +75,25 @@ Then create a cronjob to run the following command at midnight. Run `crontab -e` and add the following line: ```bash -0 0 * * * mysqldump -u controlpanelbackupuser --password= --single-transaction --quick --lock-tables=false controlpanel > /var/www/controlpanel/backups-$(date +\%F).sql +0 0 * * * mysqldump -u ctrlpanelbackupuser --password= --single-transaction --quick --lock-tables=false ctrlpanel > /var/www/ctrlpanel/backups-$(date +\%F).sql ``` -This will create a backup at /var/www/controlpanel/backups-$(date +\%F).sql every day at midnight. +This will create a backup at /var/www/ctrlpanel/backups-$(date +\%F).sql every day at midnight. Every file will have the date when it was made in the filename, so you can also resolve issues that happened a few days ago. ## Appliaction key + The application key is used to encrypt the data in the database, if its lost you will not be able to decrypt the data in the database. ### Backup the application key + To backup the appliaction key you need to get it from the .env file you can get there with this command: -```nano /var/www/controlpanel/.env``` +```nano /var/www/ctrlpanel/.env``` keep this key safe you will need later! ### Restore the application key + After you have reinstalled the panel go back into the .env -```nano /var/www/controlpanel/.env``` +```nano /var/www/ctrlpanel/.env``` You can then change the new key with the old key! diff --git a/versioned_docs/version-1.0/Guides/products.md b/versioned_docs/version-1.0/Guides/products.md index 100900de..98ed3da5 100644 --- a/versioned_docs/version-1.0/Guides/products.md +++ b/versioned_docs/version-1.0/Guides/products.md @@ -13,16 +13,20 @@ You can check out the pterodactyl server creation page for more information abou ## Product Linking +
Example of making a product for Minecraft servers. ### Information + Product linking allows you to configure the nodes and eggs this product can be a used on. For example, you have a node that is more powerful than another node, you may most likely want to charge a bit extra for the usage of this node. Or you may have a node dedicated for Minecraft hosting and another node for discord bots. Using the node and egg links, you can easily keep your pricing and server creation separated. ### Hiding nodes and eggs + You can hide specific nodes or eggs from being used by not configuring them in any of your products. This way, they won’t show up in the server creation page and therefore can’t be used by your customers. This is great if you have some nodes or eggs that you want to exclude from Ctrlpanel. ### Tips -If you have a well-configured product, you can use the Copy button to copy the product to create slight variations of it easily :) + +If you have a well-configured product, you can use the Copy button to copy the product to create slight variations of it easily :) diff --git a/versioned_docs/version-1.0/Guides/themes.md b/versioned_docs/version-1.0/Guides/themes.md index a2684cae..12733353 100644 --- a/versioned_docs/version-1.0/Guides/themes.md +++ b/versioned_docs/version-1.0/Guides/themes.md @@ -2,11 +2,11 @@ sidebar_position: 4 --- +# Themes + import DocusaurusImageUrl from '@site/static/img/docusaurus.png'; import useBaseUrl from '@docusaurus/useBaseUrl'; -# Themes - import TOCInline from '@theme/TOCInline'; @@ -14,9 +14,9 @@ import TOCInline from '@theme/TOCInline'; ## Install a theme :::info -You should always follow the instructions of the theme you want to install. +You should always follow the instructions of the theme you want to install. ::: - + Most themes are installed by placing files in the `/themes` and `/public/themes` folders. Then you can select the theme in your `settings > general > theme` @@ -25,32 +25,41 @@ Then you can select the theme in your `settings > general > theme` ## Create a theme ### Basic setup + Ctrlpanel.gg uses the module [laravel-themer](https://github.com/qirolab/laravel-themer). To start creating your own theme run the following command -```sh + +```bash php artisan make:theme ``` + This will ask you some basic questions and will setup a base for you to start with. ### Bladefiles & layout + Now you can find a copy of the original default theme files in the new folder the command above just created. -You should start by modifying those two files first because those are responsible for the main layout of the dashboard. +You should start by modifying those two files first because those are responsible for the main layout of the dashboard. `/themes//views/layouts/app.blade.php` `/themes//views/layouts/main.blade.php` ### CSS + You can create a new folder in `/themes//app.css` with your own custom CSS. Import the CSS in your blade files with the following line + ```blade ``` + and remove the line + ```blade @vite('themes/default/sass/app.scss') ``` ### Sharing the theme (Optional) + Make sure you include both the `/themes` and `/public/themes` folder and a file to guide other users on how to install your theme. -Keep the installation instructions as simple as possible and verify you didn´t forget anything, no matter how small the step might seem to you. +Keep the installation instructions as simple as possible and verify you didn´t forget anything, no matter how small the step might seem to you. -You can upload your theme to our [Market](https://market.ctrlpanel.gg/) or share it however you like. \ No newline at end of file +You can upload your theme to our [Market](https://market.ctrlpanel.gg/) or share it however you like. diff --git a/versioned_docs/version-1.0/Guides/translation.md b/versioned_docs/version-1.0/Guides/translation.md index 481a4c39..4c26f17c 100644 --- a/versioned_docs/version-1.0/Guides/translation.md +++ b/versioned_docs/version-1.0/Guides/translation.md @@ -5,12 +5,12 @@ sidebar_position: 3 # Adding translation Files All translation Files can be found in this repo -https://github.com/1day2die/cpgg_lang + -### How to Install +## How to Install -Download the needed language.json file and put it in your `/var/www/controlpanel/resources/lang` +Download the needed language.json file and put it in your `/var/www/ctrlpanel/resources/lang` Now you need to enable the Language in your Dashboard Settings. -Go to `YOUR_DASHBOARD.com/admin/settings#language` and adjust your Settings accordingly. +Go to `YOUR_DASHBOARD.com/admin/settings#Locale` and adjust your Settings accordingly. The new Language should pop up in the selection Menu diff --git a/versioned_docs/version-1.0/Guides/uninstallation.md b/versioned_docs/version-1.0/Guides/uninstallation.md index c6fc186f..cc7c3ec0 100644 --- a/versioned_docs/version-1.0/Guides/uninstallation.md +++ b/versioned_docs/version-1.0/Guides/uninstallation.md @@ -4,7 +4,9 @@ sidebar_position: 5 # Uninstallation -Users, folders and filenames have been renamed from "dashboard" ⇒ "controlpanel". Be aware that the provided commands may not fit your installation. Please change the users, folder and filenames for the commands corresponding to your installation. +:::info +Users, folders and filenames have been renamed from "controlpanel" ⇒ "ctrlpanel". Be aware that the provided commands may not fit your installation. Please change the users, folder and filenames for the commands corresponding to your installation. +::: :::warning @@ -17,16 +19,17 @@ import TOCInline from '@theme/TOCInline'; -### Stop everything +## Stop everything You need to stop ctrlpanel and all of its services before you can uninstall it. ```bash -cd /var/www/controlpanel +cd /var/www/ctrlpanel sudo php artisan down -sudo systemctl stop controlpanel +sudo systemctl stop ctrlpanel ``` + ## Remove ### Service and cronjob @@ -34,16 +37,17 @@ sudo systemctl stop controlpanel You have to stop and remove the service and cronjob. ```bash -sudo systemctl stop controlpanel -sudo systemctl disable controlpanel -sudo rm /etc/systemd/system/controlpanel.service +sudo systemctl stop ctrlpanel +sudo systemctl disable ctrlpanel +sudo rm /etc/systemd/system/ctrlpanel.service sudo systemctl daemon-reload sudo systemctl reset-failed ``` To open the crontab run: `crontab -e` and remove the following configuration from crontab. + ```bash -* * * * * php /var/www/controlpanel/artisan schedule:run >> /dev/null 2>&1 +* * * * * php /var/www/ctrlpanel/artisan schedule:run >> /dev/null 2>&1 ``` ### Webconfig and SSL certificates @@ -52,12 +56,12 @@ You now have to remove the webconfig and restart it ```bash # NGINX -sudo unlink /etc/nginx/sites-enabled/controlpanel.conf -sudo rm /etc/nginx/sites-available/controlpanel.conf +sudo unlink /etc/nginx/sites-enabled/ctrlpanel.conf +sudo rm /etc/nginx/sites-available/ctrlpanel.conf sudo systemctl reload nginx # Apache2 -sudo a2dissite controlpanel.conf -sudo rm /etc/apache2/sites-available/controlpanel.conf +sudo a2dissite ctrlpanel.conf +sudo rm /etc/apache2/sites-available/ctrlpanel.conf sudo systemctl reload apache2 sudo certbot delete --cert-name @@ -68,17 +72,17 @@ sudo certbot delete --cert-name You now have to remove the database and user. ```bash -sudo mysql -u root -p -e "DROP DATABASE controlpanel;" -sudo mysql -u root -p -e "DROP USER 'controlpaneluser'@'127.0.0.1';" +sudo mysql -u root -p -e "DROP DATABASE ctrlpanel;" +sudo mysql -u root -p -e "DROP USER 'ctrlpaneluser'@'127.0.0.1';" sudo mysql -u root -p -e "FLUSH PRIVILEGES;" ``` -### Files +### Files You now have to remove the files. ```bash -sudo rm -rf /var/www/controlpanel +sudo rm -rf /var/www/ctrlpanel ``` ### Extra Dependency @@ -86,7 +90,7 @@ sudo rm -rf /var/www/controlpanel You need to uninstall this, use the appropriate PHP version (php -v) ```bash -sudo apt remove php8.1-intl +sudo apt remove php8.3-{intl,redis} ``` ### Pterodactyl API Key diff --git a/versioned_docs/version-1.0/Installation/additional-configuration.md b/versioned_docs/version-1.0/Installation/additional-configuration.md index b4c13869..2ec9034e 100644 --- a/versioned_docs/version-1.0/Installation/additional-configuration.md +++ b/versioned_docs/version-1.0/Installation/additional-configuration.md @@ -4,12 +4,6 @@ sidebar_position: 3 # Additional Configuration -:::info - -The StripeWebhook URL has been changed in `v0.9` due to the new extension support. Read the Stripe section below, it contains the new URL. - -::: - import TOCInline from '@theme/TOCInline'; @@ -17,34 +11,37 @@ import TOCInline from '@theme/TOCInline'; ## Misc Configuration ### Setup Auth + [How](http://faq.demostoreprestashop.com/faq.php?fid=133&pid=41) to get CLIENT_ID and CLIENT_SECRET
-for the redirect URI, you have to use YOUR_WEBSITE_URL + /auth/callback (example: https://demo.ctrlpanel.gg/auth/callback) +for the redirect URI, you have to use YOUR_WEBSITE_URL + /auth/callback (example: ) **Adding the Discord Bot**
If you would like to automatically force new users to join your Discord server after they have verified, you will need to set up a Discord bot. This can be an already existing Discord bot in your server. If your bot isn't in the server yet, add it by using this: `https://discord.com/api/oauth2/authorize?client_id=&permissions=8&scope=bot`. Replace the `` with your bots client ID. ### Setup Discord OAuth2 -1. Head to `https://YOUR_DOMAIN_HERE/admin/settings#misc` (change `YOUR_DOMAIN_HERE` to your dashboard domain) -2. On the Discord section put in the following: -- Your bot's client ID -- Your bot's client secret -- Your bot's token -- Your Discord Guild ID (optional, but useful if you want the user to be added to your server) -- Your Discord Invite (optional, but useful if you want the user to be added to your server) -- Your Discord Role ID (optional, but useful if you want the verified user to recieve a role on your server after verifying) -3. Then press the "Submit" button to save. + +1. Go to `https://YOUR_DOMAIN_HERE/admin/settings#Discord` (replace `YOUR_DOMAIN_HERE` with your dashboard domain). +2. In the Discord section, enter the following information: + - Your bot's Token + - Your bot's Client ID + - Your bot's Client Secret + - Your Discord Guild ID (optional, but useful if you want the user to be added to your server) + - Your Discord Invite URL (optional, but useful if you want the user to be able to join into your server using the invitation link) + - Your Discord Role ID (optional, but useful if you want the verified user to receive a role on your server after verification) + - Your Discord Role ID on Purchase (optional, but useful if you want the user to get a role on your server after purchase) +3. Finally, click the "Save" button to save the changes. That's it! The Dashboard can now use your bot to make API calls to Discord to place new users into your Discord server. Your bot will not come online as we only use it to make API calls when someone verifies, you can still use your bot as you normally would as it won't affect the bot itself. ### reCAPTCHA v2 -Go to `https:///admin/settings#misc` +Go to `https:///admin/settings#General` Ctrlpanel uses visible reCAPTCHA to secure the login page from brute-force attacks. If the login attempt is considered suspicious, users may be required to perform a reCAPTCHA challenge. You can generate your own keys in the [admin console](https://www.google.com/recaptcha/admin/create) -Go to the Admin Misc settings and change the `reCAPTCHA Site-Key` and `reCAPTCHA Secret-Key`. Once you've updated it, press `Submit`. If it works correctly then below the reCAPTCHA settings under `Your reCAPTCHA`, you should be able to see the reCAPTCHA without the `This reCAPTCHA is for testing purposes only. Please report to the site adminif you are seeing this`. +Go to the Admin Misc settings and change the `reCAPTCHA Site Key` and `reCAPTCHA Secret Key`. Once you've updated it, press `Save`. **FAQ for reCAPTCHA**
@@ -56,12 +53,13 @@ Go to the Admin Misc settings and change the `reCAPTCHA Site-Key` and `reCAPTCHA To send out notifications and mails, you will need to configure your mail variables correctly. You can use a free mail server; for example, from [Mailjet](https://www.mailjet.com/). You can also install your own mail server using, for example, [Mailcow](https://mailcow.email/) -Go to `https:///admin/settings#misc` and enter your mail credentials that you recieved from whichever provider. +Go to `https:///admin/settings#Mail` and enter your mail credentials that you recieved from whichever provider. Once set run these 2 commands to ensure that emails work: + ```bash -php /var/www/controlpanel/artisan config:clear -php /var/www/controlpanel/artisan queue:restart +php /var/www/ctrlpanel/artisan config:clear +php /var/www/ctrlpanel/artisan queue:restart ``` To test the mail configuration, you can go to the Users tab and click the notify button top right. @@ -102,4 +100,4 @@ To see the list of avaliable payment options with Stripe, read their documentati Just like Paypal, you can change it from Live to Sandbox and vice-versa in case you want to test to make sure that your payments are working correctly. -Did something go wrong for you? We hope not, however it's very possible. If you need support, feel free to create a support thread on our [Discord](https://discord.gg/4Y6HjD2uyU). \ No newline at end of file +Did something go wrong for you? We hope not, however it's very possible. If you need support, feel free to create a support thread on our [Discord](https://discord.gg/ctrlpanel-gg-787829714483019826). diff --git a/versioned_docs/version-1.0/Installation/getting-started.md b/versioned_docs/version-1.0/Installation/getting-started.md index c6277253..e47e507b 100644 --- a/versioned_docs/version-1.0/Installation/getting-started.md +++ b/versioned_docs/version-1.0/Installation/getting-started.md @@ -17,7 +17,7 @@ import TOCInline from '@theme/TOCInline'; ## Dependencies -- PHP `8.3` with the following extensions: `cli`, `openssl`, `gd`, `mysql`, `PDO`, `mbstring`, `tokenizer`, `bcmath`, `xml` or `dom`, `curl`, `zip`, and `fpm` if you are planning to use NGINX. +- PHP `8.2`, `8.3` (recommended) or `8.4` with the following extensions: `cli`, `openssl`, `gd`, `mysql`, `PDO`, `mbstring`, `tokenizer`, `bcmath`, `xml` or `dom`, `curl`, `zip`, `redis`, `intl` and `fpm` if you are planning to use NGINX. - MySQL `5.7.22` or higher (MySQL `8` recommended) **or** MariaDB `10.2` or higher. - A web server (Apache, NGINX, etc.) - `curl` @@ -74,7 +74,7 @@ The first step in this process is to create the folder where the panel will live newly created folder. Below is an example of how to perform this operation. ```bash -mkdir -p /var/www/controlpanel && cd /var/www/controlpanel +mkdir -p /var/www/ctrlpanel && cd /var/www/ctrlpanel ``` ```bash @@ -93,9 +93,9 @@ This is for MariaDB. Please change the USE_YOUR_OWN_PASSWORD part to your passwo ```bash mysql -u root -p -CREATE DATABASE controlpanel; -CREATE USER 'controlpaneluser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; -GRANT ALL PRIVILEGES ON controlpanel.* TO 'controlpaneluser'@'127.0.0.1'; +CREATE DATABASE ctrlpanel; +CREATE USER 'ctrlpaneluser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; +GRANT ALL PRIVILEGES ON ctrlpanel.* TO 'ctrlpaneluser'@'127.0.0.1'; FLUSH PRIVILEGES; EXIT; ``` @@ -118,7 +118,6 @@ This is a basic NGINX configuration. Please replace any `` placeholders import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; - @@ -129,11 +128,13 @@ import TabItem from '@theme/TabItem'; sudo apt install certbot sudo apt install python3-certbot-nginx ``` + Once the installation is complete, you now need to generate the SSL certificates. To do so, run the following command below. Replace any `YOUR.DOMAIN.HERE` placeholders with the domain you're using for your Ctrlpanel setup. ```bash certbot certonly --nginx -d YOUR.DOMAIN.HERE ``` + It will save all certificates to `/etc/letsencrypt/live/YOUR.DOMAIN.HERE/`. Now that SSL is ready to be used, let's setup NGINX. To do so, run the following command below to get rid of NGINX's default configuration and to avoid any other errors. @@ -141,14 +142,19 @@ import TabItem from '@theme/TabItem'; ```bash rm /etc/nginx/sites-enabled/default ``` + + > **Note:** If you see the error that there is no such file, then most likely you have already deleted it when installing Pterodactyl + Once done, we now have to open the NGINX configuration file. This depends on your OS. Debian/Ubuntu Based OSes: + ```bash nano /etc/nginx/sites-available/ctrlpanel.conf ``` RHEL, CentOS, Rocky Linux, or AlmaLinux based OSes: + ```bash nano /etc/nginx/conf.d/ctrlpanel.conf ``` @@ -168,7 +174,7 @@ import TabItem from '@theme/TabItem'; listen 443 ssl http2; server_name YOUR.DOMAIN.HERE; - root /var/www/controlpanel/public; + root /var/www/ctrlpanel/public; index index.php; access_log /var/log/nginx/ctrlpanel.app-access.log; @@ -180,12 +186,12 @@ import TabItem from '@theme/TabItem'; sendfile off; - # SSL Configuration - Replace any YOUR.DOMAIN.HERE with the domain you're using for your Ctrlpanel setup. + # SSL Configuration - Replace any YOUR.DOMAIN.HERE with the domain you're using for your Ctrlpanel setup. ssl_certificate /etc/letsencrypt/live/YOUR.DOMAIN.HERE/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/YOUR.DOMAIN.HERE/privkey.pem; ssl_session_cache shared:SSL:10m; ssl_protocols TLSv1.2 TLSv1.3; - ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256- CM-SHA38 4:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20 POLY1305 :DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; + ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; ssl_prefer_server_ciphers on; # See https://hstspreload.org/ before uncommenting the line below. @@ -247,14 +253,17 @@ import TabItem from '@theme/TabItem'; ```bash rm /etc/nginx/sites-enabled/default ``` + Once done, we now have to open the NGINX configuration file. This depends on your OS. Debian/Ubuntu Based OSes: + ```bash nano /etc/nginx/sites-available/ctrlpanel.conf ``` RHEL, CentOS, Rocky Linux, or AlmaLinux based OSes: + ```bash nano /etc/nginx/conf.d/ctrlpanel.conf ``` @@ -267,7 +276,7 @@ import TabItem from '@theme/TabItem'; listen 80; server_name YOUR.DOMAIN.HERE; - root /var/www/controlpanel/public; + root /var/www/ctrlpanel/public; index index.html index.htm index.php; charset utf-8; @@ -332,14 +341,17 @@ import TabItem from '@theme/TabItem'; ```bash a2dissite 000-default.conf ``` + Once done, we now have to open the NGINX configuration file. This depends on your OS. Debian/Ubuntu Based OSes: + ```bash nano /etc/apache2/sites-available/ctrlpanel.conf ``` RHEL, CentOS, Rocky Linux, or AlmaLinux based OSes: + ```bash nano /etc/httpd/conf.d/ctrlpanel.conf ``` @@ -359,14 +371,14 @@ import TabItem from '@theme/TabItem'; # Replace YOUR.DOMAIN.HERE with your domain. ServerName YOUR.DOMAIN.HERE - DocumentRoot "/var/www/controlpanel/public" + DocumentRoot "/var/www/ctrlpanel/public" AllowEncodedSlashes On php_value upload_max_filesize 100M php_value post_max_size 100M - + Require all granted AllowOverride all @@ -397,14 +409,17 @@ import TabItem from '@theme/TabItem'; ```bash a2dissite 000-default.conf ``` + Once done, we now have to open the NGINX configuration file. This depends on your OS. Debian/Ubuntu Based OSes: + ```bash nano /etc/apache2/sites-available/ctrlpanel.conf ``` RHEL, CentOS, Rocky Linux, or AlmaLinux based OSes: + ```bash nano /etc/httpd/conf.d/ctrlpanel.conf ``` @@ -415,14 +430,14 @@ import TabItem from '@theme/TabItem'; # Replace YOUR.DOMAIN.HERE with your domain. ServerName YOUR.DOMAIN.HERE - DocumentRoot "/var/www/controlpanel/public" + DocumentRoot "/var/www/ctrlpanel/public" AllowEncodedSlashes On php_value upload_max_filesize 100M php_value post_max_size 100M - + AllowOverride all Require all granted @@ -450,15 +465,15 @@ use them correctly. ```bash # If using NGINX or Apache (not on CentOS): -chown -R www-data:www-data /var/www/controlpanel/ +chown -R www-data:www-data /var/www/ctrlpanel/ chmod -R 755 storage/* bootstrap/cache/ # If using NGINX on CentOS: -chown -R nginx:nginx /var/www/controlpanel/ +chown -R nginx:nginx /var/www/ctrlpanel/ chmod -R 755 storage/* bootstrap/cache/ # If using Apache on CentOS -chown -R apache:apache /var/www/controlpanel/ +chown -R apache:apache /var/www/ctrlpanel/ chmod -R 755 storage/* bootstrap/cache/ **** @@ -475,10 +490,11 @@ The first thing we need to do is create a new cron job that runs every minute to ```bash crontab -e ``` + If it prompts you for a file editor, choose number 1. Once It's opened, go to a line that doesn't have a `#` in front of it. Then paste in this: ```bash -* * * * * php /var/www/controlpanel/artisan schedule:run >> /dev/null 2>&1 +* * * * * php /var/www/ctrlpanel/artisan schedule:run >> /dev/null 2>&1 ``` ### Create Queue Worker @@ -500,7 +516,7 @@ Description=Ctrlpanel Queue Worker User=www-data Group=www-data Restart=always -ExecStart=/usr/bin/php /var/www/controlpanel/artisan queue:work --sleep=3 --tries=3 +ExecStart=/usr/bin/php /var/www/ctrlpanel/artisan queue:work --sleep=3 --tries=3 StartLimitBurst=0 [Install] @@ -514,15 +530,6 @@ sudo systemctl enable --now ctrlpanel.service ``` #### Navigate to the installer -import useBaseUrl from '@docusaurus/useBaseUrl'; - -:::info - -If you see the error **"php version: 8.3.6 (minimum required 8.1)"** on the main installer page, then just ignore it. This is due to the specifics of checking version compatibility. PHP8.3 has been tested and works stably! - - - -::: To begin installation, go to `https://YOUR_DOMAIN_HERE.com` and follow the installer instructions. diff --git a/versioned_docs/version-1.0/Installation/troubleshooting.md b/versioned_docs/version-1.0/Installation/troubleshooting.md index f3aca236..e8d709ef 100644 --- a/versioned_docs/version-1.0/Installation/troubleshooting.md +++ b/versioned_docs/version-1.0/Installation/troubleshooting.md @@ -4,28 +4,28 @@ sidebar_position: 4 # Troubleshooting -We understand that you may encounter some issues on the way of setting up your dashboard, however our support is ready for you! If you need any help feel free to reach out to us on our [Discord](https://discord.gg/4Y6HjD2uyU). +We understand that you may encounter some issues on the way of setting up your dashboard, however our support is ready for you! If you need any help feel free to reach out to us on our [Discord](https://discord.gg/ctrlpanel-gg-787829714483019826). When contacting support, we recommend adding logs to your support thread to speed up the time it takes you to get support. How do you do that? Well, how about we scroll a bit more downwards... ## Getting Error Logs -If you ever face any issues, we always ask for logs to understand more about whats happening and what's the error with your setup. These logs do not contain any confidential or sensitive information and only contains error logs. There are 2 options for logs, either the recommended way which uses Pteropaste to output logs which helps us, or the advanced route which outputs the errors directly into console. +If you ever face any issues, we always ask for logs to understand more about whats happening and what's the error with your setup. These logs do not contain any confidential or sensitive information and only contains error logs. There are 2 options for logs, either the recommended way which uses Pteropaste to output logs which helps us, or the advanced route which outputs the errors directly into console. ### Hastebin Output (recommended) This uses a website called pteropaste that is hosted by Pterodactyl and the thing we use to send your last 100 lines of your Ctrlpanel errors. The command below will output a link which redirects to a text copy of Ctrlpanel's error log which can assist you and others with issues you're facing. Ensure that port 80 and 443 is unblocked on your network to face no issues. -``` -tail -n 100 /var/www/controlpanel/storage/logs/laravel.log | nc pteropaste.com 99 +```bash +tail -n 100 /var/www/ctrlpanel/storage/logs/laravel.log | nc pteropaste.com 99 ``` ### Text Output (advanced) The text output option is for more advanced users. It takes Ctrlpanel's logs and outputs them directly into console. We suggest that only advanced Linux users take this option as the output may be large in size. -``` -tail -n 100 /var/www/controlpanel/storage/logs/laravel.log +```bash +tail -n 100 /var/www/ctrlpanel/storage/logs/laravel.log ``` -Using either option will help us help you with your issues. If you need any support regarding Ctrlpanel, create a support thread on our [Discord](https://discord.gg/4Y6HjD2uyU). \ No newline at end of file +Using either option will help us help you with your issues. If you need any support regarding Ctrlpanel, create a support thread on our [Discord](https://discord.gg/ctrlpanel-gg-787829714483019826). diff --git a/versioned_docs/version-1.0/Installation/updating.md b/versioned_docs/version-1.0/Installation/updating.md index fc54cb45..89d636e5 100644 --- a/versioned_docs/version-1.0/Installation/updating.md +++ b/versioned_docs/version-1.0/Installation/updating.md @@ -5,31 +5,395 @@ sidebar_position: 5 # Updating :::caution -This guide is for updates 0.9.X -> 1.0 -If you update from 0.8.X or older, please follow our 0.9 update guide which can be found [here](/docs/0.9/Installation/updating) +This guide is for updates 0.9.X -> 1.0.0 + +If you update from 0.8.X or older, please follow our 0.9 update guide which can be found [here](/docs/0.9/Installation/updating).
+If you want to upgrade from version 1.0.0 to 1.0.1 or newer, use [this](/docs/1.0.1/Installation/updating) guide ::: -### Enable Maintenance Mode +## Enable Maintenance Mode ```bash cd /var/www/controlpanel sudo php artisan down ``` -### Pulling the New Files +## Name change + +In April 2023, CtrlPanel changed its name from ControlPanel to CtrlPanel. For a long time we continued to use the old name in the names of directories, databases and other things, but it's time to finally abandon the old name. This guide will help you do this, just read the description of the commands carefully and execute them in the correct order + +### Directory + +Let's start with a simple one, change the name of the directory + +```bash +mv /var/www/controlpanel/ /var/www/ctrlpanel/ +``` + +And now let's move into it in advance **:)** + +```bash +cd /var/www/ctrlpanel/ +``` + +### Queue Listeners + +Well, great, we've taken the first steps. Let's fix the directory in the path of the crontab and the queue worker + +#### Crontab + +Go to the crontab editor using the following command: + +```bash +crontab -e +``` + +Find the line related to CtrlPanel, it will look something like this: + +``` +* * * * * php /var/www/controlpanel/artisan schedule:run >> /dev/null 2>&1 +``` + +Change `controlpanel` to `ctrlpanel` in directory name. You should get the following result, you can just copy and paste the following line instead of the old one: + +``` +* * * * * php /var/www/ctrlpanel/artisan schedule:run >> /dev/null 2>&1 +``` + +Now save the file, if you are using `nano` then press `Ctrl+X`, press `Y`, and `Enter` + +#### Queue Worker + +Now let's fix the queue worker, a pretty easy task. + +First, let's define the name of your queue worker file, it can be called either `ctrlpanel.service` or `controlpanel.service`. We have prepared command that will simplify this task. Just copy and paste it into your terminal + +```bash +QUEUE_WORKER_FIND='[ -f /etc/systemd/system/ctrlpanel.service ] && echo -e "\nFile name: ctrlpanel.service" || ([ -f /etc/systemd/system/controlpanel.service ] && echo -e "\nFile name: controlpanel.service" || echo -e "\nQueue Worker not found!")' +eval $QUEUE_WORKER_FIND +``` + +After executing the command, you will see the name of your file in the console. +Depending on the file name, the procedure will be slightly different. Select the appropriate tab below: + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + +Great. Let's fix the queue worker so that it works in the newly renamed directory. First, let's stop and unload it + +```bash +systemctl stop ctrlpanel.service +systemctl disable ctrlpanel.service +``` + + + +Great. Let's fix the queue worker so that it works in the newly renamed directory. First, let's stop and unload it + +```bash +systemctl stop controlpanel.service +systemctl disable controlpanel.service +``` + +Let's rename the file. To do this, run the following command: + +```bash +mv /etc/systemd/system/controlpanel.service /etc/systemd/system/ctrlpanel.service +``` + + + + +Now we can edit the paths, let's open the file with the command: + +```bash +nano /etc/systemd/system/ctrlpanel.service +``` + +Find the line `ExecStart=/usr/bin/php /var/www/controlpanel/artisan queue:work --sleep=3 --tries=3` and replace `controlpanel` with `ctrlpanel` in directory path + +The final file should look like this, you can also just copy and paste the contents below instead of the old one: + +```bash +# Ctrlpanel Queue Worker File +# ---------------------------------- + +[Unit] +Description=Ctrlpanel Queue Worker + +[Service] +# On some systems the user and group might be different. +# Some systems use `apache` or `nginx` as the user and group. +User=www-data +Group=www-data +Restart=always +ExecStart=/usr/bin/php /var/www/ctrlpanel/artisan queue:work --sleep=3 --tries=3 +StartLimitBurst=0 + +[Install] +WantedBy=multi-user.target +``` + +Now save the file, if you are using `nano` then press `Ctrl+X`, press `Y`, and `Enter` + +Let's load service, and also check if it is running. To do this, run the following commands: + +```bash +# Load service and enable it +systemctl enable --now ctrlpanel.service + +# Check status, it should be "Active: active (running)" +systemctl status ctrlpanel.service +``` + +Congratulations, you have finished updating the queue worker + +### Database + +Let's rename the database, as well as the user used to connect + +#### Enter mysql shell + +To do this, enter this command in the terminal: + +```bash +mysql -u root -p +``` + +#### Create new database and user + +> Please change the `USE_YOUR_OWN_PASSWORD` part to your password. Also, 127.0.0.1 is for localhost, сhange this if the database is on a separate server. + +```sql +CREATE DATABASE ctrlpanel; +CREATE USER 'ctrlpaneluser'@'127.0.0.1' IDENTIFIED BY 'USE_YOUR_OWN_PASSWORD'; +GRANT ALL PRIVILEGES ON ctrlpanel.* TO 'ctrlpaneluser'@'127.0.0.1'; +FLUSH PRIVILEGES; +EXIT; +``` + +#### Transfer data from the old database to the new one + +```bash +mysqldump -u root -p controlpanel > /var/www/ctrlpanel/transfer.sql +mysql -u root -p ctrlpanel < /var/www/ctrlpanel/transfer.sql +``` + +#### Update user privileges + +```sql +GRANT ALL PRIVILEGES ON ctrlpanel.* TO 'ctrlpaneluser'@'127.0.0.1'; +FLUSH PRIVILEGES; +EXIT; +``` + +#### Update the connection data in the .env file + +We have changed the name of the database and the user, now we need to change the names in the .env file so that ctrlpanel can access them. + +Let's open the .env file located in the CtrlPanel directory, run the following command: + +```bash +nano /var/www/ctrlpanel/.env +``` + +Find the section that contains the data for connecting to your MySQL server, it looks something like this: + +```bash +### --- DB Settings (required) --- ### +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=controlpanel +DB_USERNAME=controlpaneluser +DB_PASSWORD=YOUR_OWN_PASSWORD +### --- DB Settings End --- ### +``` + +:::info +If your password contains special characters, escape it using double quotes + +```bash +DB_PASSWORD="YOUR_OWN_PASSWORD" +``` + +::: + +Replace the variables `DB_DATABASE`, `DB_USERNAME` and `DB_PASSWORD` with new ones, the result should look something like this: + +```bash +### --- DB Settings (required) --- ### +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=ctrlpanel +DB_USERNAME=ctrlpaneluser +DB_PASSWORD=YOUR_OWN_PASSWORD +### --- DB Settings End --- ### +``` + +Now save the file, if you are using `nano` then press `Ctrl+X`, press `Y`, and `Enter` + +### Nginx + +The last step, let's change the directory in the nginx configuration for your CtrlPanel + +Let's define the name of your configuration file, to do this, run this command: + +```bash +NGINX_FIND='[ -f /etc/nginx/sites-enabled/ctrlpanel.conf ] && echo -e "\nFile name: ctrlpanel.conf" || ([ -f /etc/nginx/sites-enabled/controlpanel.conf ] && echo -e "\nFile name: controlpanel.conf" || echo -e "\nNginx configuration not found!")' +eval $NGINX_FIND +``` + +After executing the command, you will see the name of your file in the console. +Depending on the file name, the procedure will be slightly different. Select the appropriate tab below: + + + + + + +Let's delete the symlink, rename the file, and create a symlink with the correct name. The commands are attached below as always **:D** + +```bash +# Delete old symlink +rm -rf /etc/nginx/sites-enabled/controlpanel.conf + +# Rename existing configuration file +mv /etc/nginx/sites-available/controlpanel.conf /etc/nginx/sites-available/ctrlpanel.conf + +# Create symlink with new name +ln -s /etc/nginx/sites-available/ctrlpanel.conf /etc/nginx/sites-enabled/ctrlpanel.conf +``` + + + + +Open the file, enter the following command: + +```bash +nano /etc/nginx/sites-available/ctrlpanel.conf +``` + +Find the following line + +```conf +root /var/www/controlpanel/public; +``` + +and change directory name to the `ctrlpanel` instead of `controlpanel`. +You should get the following result: + +```conf +root /var/www/ctrlpanel/public; +``` + +Now save the file, if you are using `nano` then press `Ctrl+X`, press `Y`, and `Enter` + +Don't forget to check the configuration, and restart nginx for the changes to take effect + +```bash +# Check for nginx errors +nginx -t + +# Restart nginx to apply changes +systemctl restart nginx +``` + +## Updating PHP version + +CtrlPanel 1.0.0 has been updated to Laravel 11, which requires a minimum version of PHP 8.2. We will help you upgrade your used version of php to 8.3. It will not take much time, provided that you are careful. + +### Check your current PHP version + +To do this, run the following command: + +```bash +php -v +``` + +If you see version 8.1 or lower, then you need to install PHP 8.2 or higher, as well as all the necessary extensions. +If you see 8.2 or higher, you can skip next steps, but make sure that you have all the necessary extensions and your nginx uses the correct PHP-FPM. + +### Installing PHP 8.3 + +Update the package list, and install PHP 8.3 from the apt repository + +```bash +apt update +apt -y install php8.3 php8.3-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip,intl,redis} +``` + +### Checking if PHP 8.3 used by default + +After installing the required PHP version, let's make sure that it is installed by default for the `php` command. This is important for the correct operation of the CtrlPanel + +```bash +php -v +``` + +If you see version 8.3, then everything is fine, and you can skip next step, if the PHP version is still 8.1 or lower, then update the default version for the `php` commamd using the following command: + +```bash +update-alternatives --set php /usr/bin/php8.3 +``` + +> Note: Path may vary depending on your system. This is just an example + +### Change PHP-FPM version for CtrlPanel's nginx config + +Open the file, enter the following command: + +```bash +nano /etc/nginx/sites-available/ctrlpanel.conf +``` + +Find the following line inside `location ~ \.php$` block + +> Note: The version may vary, but it should not be lower than `8.2` + +```conf +fastcgi_pass unix:/run/php/php8.1-fpm.sock; +``` + +and change PHP-FPM socket version to `8.3`. You should get the following result: + +```conf +fastcgi_pass unix:/run/php/php8.3-fpm.sock; +``` + +Now save the file, if you are using `nano` then press `Ctrl+X`, press `Y`, and `Enter` + +Check the configuration, and restart nginx for the changes to take effect + +```bash +# Check for nginx errors +nginx -t + +# Restart nginx to apply changes +systemctl restart nginx +``` + +Congratulations! Everything is ready, you can continue updating **:3** + +## Pulling the New Files ```bash sudo git stash sudo git pull -sudo chmod -R 755 /var/www/controlpanel +sudo chmod -R 755 /var/www/ctrlpanel ``` -### Update Dependencies +## Update Dependencies :::caution Important Step for Updating from Version 0.9.X to 1.0 + ```bash -sudo rm -rf /var/www/controlpanel/vendor +sudo rm -rf /var/www/ctrlpanel/vendor ``` + ::: ```bash @@ -37,40 +401,44 @@ apt install php8.3-redis sudo composer install --no-dev --optimize-autoloader ``` -### Updating the Database -Make sure you have a _working_ backup of your database. A Guide can be found [here](docs/Guides/backups) +## Updating the Database + +Make sure you have a _working_ backup of your database. A Guide can be found [here](/docs/Guides/backups) + ```bash sudo php artisan migrate --seed --force ``` :::caution Important Step for Updating from Version 0.9.X to 1.0 Version 1.0 introduces a new permissions system. You will need to seed the permissions table. + ```bash php artisan db:seed --class=PermissionsSeeder ``` + ::: -### Clear Compiled Template Cache +## Clear Compiled Template Cache ```bash sudo php artisan view:clear sudo php artisan config:clear ``` -### Set Permissions +## Set Permissions ```bash # If using NGINX or Apache (not on CentOS): -sudo chown -R www-data:www-data /var/www/controlpanel/ +sudo chown -R www-data:www-data /var/www/ctrlpanel/ # If using NGINX on CentOS: -sudo chown -R nginx:nginx /var/www/controlpanel/ +sudo chown -R nginx:nginx /var/www/ctrlpanel/ # If using Apache on CentOS -sudo chown -R apache:apache /var/www/controlpanel/ +sudo chown -R apache:apache /var/www/ctrlpanel/ ``` -### Restarting Queue Workers +## Restarting Queue Workers After every update, you should restart the queue worker to ensure that the new code is loaded in and used. @@ -78,12 +446,12 @@ After every update, you should restart the queue worker to ensure that the new c sudo php artisan queue:restart ``` -### Disable Maintenance Mode +## Disable Maintenance Mode ```bash sudo php artisan up ``` ## Disclaimer -If you notice any bugs 🐛 or would like something to be improved or added, let us know by making a [GitHub Issue](https://github.com/ControlPanel-gg/dashboard/issues/new/choose).
**For any major security risk, contact** _1day2die_ on Discord
-Use This dashboard at your own risk. + +If you notice any bugs 🐛 or would like something to be improved or added, let us know by making a [GitHub Issue](https://github.com/CtrlPanel-gg/panel/issues/new/choose).
**For any major security risk, create** [GitHub vulnerability report](https://github.com/Ctrlpanel-gg/panel/security/advisories/new). Avoid discussing vulnerabilities in public chats, and also do not create reports on public trackers! diff --git a/versioned_docs/version-1.0/intro.md b/versioned_docs/version-1.0/intro.md index de2dc530..ed071c43 100644 --- a/versioned_docs/version-1.0/intro.md +++ b/versioned_docs/version-1.0/intro.md @@ -4,17 +4,20 @@ sidebar_position: 1 # Introduction -ControlPanel's Dashboard is a dashboard application designed to offer clients a management tool to manage their [Pterodactyl](https://pterodactyl.io/) servers. This dashboard comes with a credit-based billing solution that credits users hourly for each server they have and suspends servers if they run out of credits. +CtrlPanel's Dashboard is a management application designed to provide clients with an intuitive tool for managing their [Pterodactyl](https://pterodactyl.io/) servers. CtrlPanel features a flexible billing system with support for plans ranging from hourly to annual, ensuring scalability and convenience for all users. Servers are automatically suspended if users exhaust their credits. -This dashboard offers an easy to use and free billing solution for all starting and experienced hosting providers. This dashboard has many customization options and added Discord OAuth verification to offer a solid link between your Discord server and your dashboard. +CtrlPanel offers a user-friendly and free billing solution tailored for both new and experienced hosting providers. With extensive customization options and Discord OAuth integration, it creates a seamless link between your Discord server and the dashboard for an enhanced user experience. ## Installation + You can find our guide for installation [here](Installation/getting-started). ## Third-parties + You can find custom themes and programs from our [Extension Hub](https://market.ctrlpanel.gg/) those are developed by third-parties. ## Support -Have a few questions? Feel free to [join](https://discord.gg/GY7PWejUaG) our support Discord server. + +Have a few questions? Feel free to [join](https://discord.gg/ctrlpanel-gg-787829714483019826) our support Discord server. We also announce every single release in our Discord and we would love to hear your feedback! diff --git a/versioned_sidebars/version-1.0.1-sidebars.json b/versioned_sidebars/version-1.0.1-sidebars.json new file mode 100644 index 00000000..f04a3d56 --- /dev/null +++ b/versioned_sidebars/version-1.0.1-sidebars.json @@ -0,0 +1,8 @@ +{ + "version-1.0.1/tutorialSidebar": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/versions.json b/versions.json index 5db5d57a..99101aa2 100644 --- a/versions.json +++ b/versions.json @@ -1,3 +1,3 @@ [ - "1.0","0.9.1","0.9","0.8" + "1.0.1","1.0","0.9.1","0.9","0.8" ]