Install the Panel
This page walks you through installing the MyOsicam panel on a fresh VPS. The installer handles everything: PHP 8.3, MariaDB, Nginx, Let’s Encrypt TLS, the database schema, and an admin account. At the end of this page you will have a working panel URL to log into.
If you haven’t read Getting Started yet, do that first — it lists the prerequisites.
Supported operating systems
| OS | Minimum version | Notes |
|---|---|---|
| Ubuntu | 22.04 LTS | Ubuntu 22.04 and 24.04 are fully supported. Ubuntu 20.04 is not supported — the PHP 8.3 PPA does not ship binaries for focal. |
| Debian | 12 | Supported on Debian 12 (Bookworm) with the Sury PHP repo. |
Before you run the installer
1. Point DNS at your VPS.
Create an A record for your panel domain (e.g. panel.example.com) pointing at your VPS’s public
IP address. The installer performs a DNS sanity check before requesting a TLS certificate, and
Let’s Encrypt requires the domain to resolve to the same IP.
2. Make sure ports 80 and 443 are free. The installer checks both ports. If another process (other than Nginx itself) is holding them, the install exits with an error asking you to stop the holder first.
3. Have your license key ready. The installer validates your license key against the MyOsicam install server as part of the install. The key was emailed to you when you purchased.
The bootstrap command
Run the following as root on your VPS. You will be prompted interactively for your license key, domain, and admin email if you do not pass them as flags.
curl -sSL https://install.myosicam.us/panel | sudo bashTo pass all required values non-interactively (useful for scripted installs):
curl -sSL https://install.myosicam.us/panel | sudo bash -s -- \ --license YOUR_LICENSE_KEY \ --domain panel.example.com \ --email admin@example.comAvailable flags
| Flag | Required | Description |
|---|---|---|
--license KEY | Yes (or prompted) | Your MyOsicam license key. |
--domain FQDN | Yes (or prompted) | Fully-qualified domain name for the panel. Must already resolve to this VPS. |
--email ADDR | Yes (or prompted) | Admin email address (used for TLS certificate issuance and admin account). |
--no-ssl | No | Skip Let’s Encrypt; serve over HTTP only. Not recommended for production. |
--channel stable|beta | No | Release channel. Defaults to stable. |
--reinstall | No | Back up an existing install and replace it. |
What the installer does
The installer runs 18 phases and prints progress for each one. Here is what happens:
- Preflight — checks root, OS, RAM (≥ 2 GB), and free disk (≥ 10 GB).
- Collect inputs — prompts for license key, domain, and email if not supplied as flags.
- DNS sanity — verifies the domain resolves to this server’s public IP (skipped with
--no-ssl). - Port conflict check — verifies ports 80 and 443 are free (or held by Nginx, which will be reconfigured).
- License validation — sends the license key and domain to
install.myosicam.usfor validation and to receive the tarball download URL. - Existing install check — if a previous install is found, requires
--reinstallto proceed (backs up the old directory and database first). - APT dependencies — installs PHP 8.3, MariaDB, Nginx, Certbot, Composer, and all required PHP extensions.
- Database setup — creates the
myosicam_paneldatabase and a dedicated MySQL user with a generated password. - Download and verify tarball — downloads the release tarball and verifies its SHA-256 checksum.
- Composer install — runs
composer install --no-dev --optimize-autoloaderinside the panel directory. - File permissions — sets ownership to
www-dataand restricts storage directory permissions. - Write
.env— generates the panel’s configuration file, including a random encryption key and database credentials. - Import schema — runs
database/install.sqlto create all tables. - Seed admin account — creates the
adminuser with a randomly generated password and setsmust_change_password = 1so you are forced to change it on first login. - Nginx vhost — writes and activates an Nginx server block for your domain.
- Let’s Encrypt TLS — runs Certbot to obtain a certificate and enable HTTPS → HTTPS redirect (skipped with
--no-ssl). - Smoke test — makes a loopback HTTP request to confirm the panel responds.
- Summary — prints your admin password and saves full details to
/root/myosicam-install-summary.txt(root-only,chmod 600).
Install log
The installer writes a redacted log (secrets are replaced with ****) to:
/var/log/myosicam-install.logIf the install fails, this is the first place to look.
After the installer finishes
At the end of a successful install the terminal prints a summary banner like this:
──────────────────────────────────────────────────────────────── ✓ MyOsicam Panel installed successfully──────────────────────────────────────────────────────────────── Panel URL: https://panel.example.com/login Admin user: admin Admin password: <generated-password>
⚠ CHANGE THIS PASSWORD on first login. ...────────────────────────────────────────────────────────────────The full summary (including database credentials) is also saved to
/root/myosicam-install-summary.txt (readable only by root).
First login
- Open
https://panel.example.com/loginin your browser. - Sign in with username
adminand the password from the installer output. - You will be prompted to change the password immediately — this is enforced by the panel and cannot be skipped.
System services installed
The installer sets up the following system-level components:
| Component | Description |
|---|---|
php8.3-fpm | PHP FastCGI process manager; started and enabled at boot. |
mariadb | Database server (only installed if MariaDB/MySQL is not already present). |
nginx | Web server; configured with a vhost for your domain. |
/etc/cron.d/myosicam-panel | Two cron jobs: panel job runner (every minute) and update checker (hourly at minute 7). |
/etc/sudoers.d/panel-update | Allows www-data to reload php8.3-fpm during in-panel updates — scoped to one exact command. |
Troubleshooting common install failures
| Symptom | Likely cause | Fix |
|---|---|---|
FAILED: must run as root | Ran without sudo. | Re-run with sudo. |
FAILED: unsupported OS | OS is not Ubuntu 22.04/24.04 or Debian 12. | Provision a supported OS. |
FAILED: insufficient RAM | VPS has less than 2 GB RAM. | Upgrade the VPS. |
FAILED: license key not recognized | Typo in the key or key not yet provisioned. | Double-check the key from your purchase email. |
FAILED: license install quota exhausted | All install slots for your license are used. | Contact support or remove an unused install from the admin portal. |
certbot failed | Domain does not yet resolve to this VPS, or port 80 is blocked. | Fix DNS / firewall, then re-run sudo certbot --nginx -d panel.example.com -m admin@example.com --agree-tos. |
apt lock still held after 300s | Another apt process (e.g. unattended-upgrades) is running. | Wait and retry, or run ps aux | grep -E "apt|dpkg" to find and stop the holder. |
Next step
Once you can log into the panel, install the Go agent on each of your OScam servers: