GETTING STARTED
INSTALLATION
Step-by-step guide to installing wolfXcore on a fresh Debian / Ubuntu VPS. Estimated time: 20–30 minutes.
Requirements
| Requirement | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 22.04 LTS | Debian 12 / 13 |
| CPU | 1 vCPU | 2+ vCPUs |
| RAM | 1 GB | 2 GB+ |
| Disk | 10 GB | 20 GB+ |
| PHP | 8.2 | 8.4 (production) |
| Node.js | 18 | 20 |
| Database | MySQL 8 / MariaDB 10.6 | MariaDB 11 |
| Cache | Redis 6 | Redis 7 |
Root or sudo access required.
All commands below assume you are running as
root or prefixing with sudo.
1 — System packages
bash
apt update && apt upgrade -y
apt install -y curl wget git unzip software-properties-common \
nginx redis-server mariadb-server supervisor
2 — PHP 8.4
Install PHP and all extensions required by Laravel and the panel.
bash
# Add Ondřej Surý PPA (or use native packages on Debian 13)
curl -sSL https://packages.sury.org/php/apt.gpg \
| gpg --dearmor > /usr/share/keyrings/php-sury.gpg
echo "deb [signed-by=/usr/share/keyrings/php-sury.gpg] \
https://packages.sury.org/php/ $(lsb_release -sc) main" \
> /etc/apt/sources.list.d/php.list
apt update
apt install -y php8.4 php8.4-fpm php8.4-cli php8.4-mbstring \
php8.4-xml php8.4-curl php8.4-zip php8.4-bcmath php8.4-mysql \
php8.4-redis php8.4-gd php8.4-intl
3 — Node.js 20 & Yarn
bash
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
npm install -g yarn
4 — Composer
bash
curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/local/bin --filename=composer
5 — Database setup
bash
mysql_secure_installation
mysql -u root -p <<'SQL'
CREATE DATABASE wolfxcore;
CREATE USER 'wolfxcore'@'127.0.0.1' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON wolfxcore.* TO 'wolfxcore'@'127.0.0.1';
FLUSH PRIVILEGES;
SQL
6 — Clone the repository
bash
mkdir -p /var/www
git clone https://github.com/YOUR_ORG/wolfxcore.git /var/www/wolfxcore
cd /var/www/wolfxcore
chmod -R 755 storage bootstrap/cache
7 — Environment configuration
- Copy the example env:
cp .env.example .env - Open
.envin your editor and fill in the values below. - Generate an app key:
php artisan key:generate
.env — key values
APP_ENV=production
APP_KEY= # auto-filled by key:generate
APP_URL=https://panel.xwolf.space
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=wolfxcore
DB_USERNAME=wolfxcore
DB_PASSWORD=your_strong_password
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis
CACHE_DRIVER=redis
# wolfXcore owner access
SUPER_ADMIN_KEY=change_me_to_a_secret_key
Never commit .env to version control.
The
SUPER_ADMIN_KEY grants unrestricted owner access to the panel.
Choose a long, random value.
8 — Install dependencies & build frontend
bash
composer install --no-dev --optimize-autoloader
yarn install
yarn build
php artisan migrate --force
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan view:clear
9 — File permissions
bash
chown -R www-data:www-data /var/www/wolfxcore
chmod -R 755 /var/www/wolfxcore
chmod -R 775 /var/www/wolfxcore/storage \
/var/www/wolfxcore/bootstrap/cache
10 — Nginx virtual host
/etc/nginx/sites-available/wolfxcore
server {
listen 80;
server_name panel.xwolf.space;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name panel.xwolf.space;
root /var/www/wolfxcore/public;
index index.php;
ssl_certificate /etc/letsencrypt/live/panel.xwolf.space/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/panel.xwolf.space/privkey.pem;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
}
location ~ /\.ht { deny all; }
}
bash
ln -s /etc/nginx/sites-available/wolfxcore /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
11 — SSL with Certbot
bash
apt install -y certbot python3-certbot-nginx
certbot --nginx -d panel.xwolf.space
12 — Queue worker (Supervisor)
/etc/supervisor/conf.d/wolfxcore-worker.conf
[program:wolfxcore-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/wolfxcore/artisan queue:work redis \
--sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/log/wolfxcore-worker.log
stopwaitsecs=3600
bash
supervisorctl reread
supervisorctl update
supervisorctl start wolfxcore-worker:*
Deployment workflow
After the initial install, updates follow this pattern:
- Push code to GitHub from your local machine.
- SSH into the VPS and run
git pullin/var/www/wolfxcore. - Run
php artisan migrate --force. - Run
php artisan config:cache && php artisan route:cache && php artisan view:clear. - Run
yarn buildto rebuild the frontend. - Reload services:
sudo systemctl reload php8.4-fpm nginx.
Never write files directly to the VPS via SCP or tee.
Always push to GitHub and pull on the server.