GETTING STARTED

INSTALLATION

Step-by-step guide to installing wolfXcore on a fresh Debian / Ubuntu VPS. Estimated time: 20–30 minutes.

Requirements

RequirementMinimumRecommended
OSUbuntu 22.04 LTSDebian 12 / 13
CPU1 vCPU2+ vCPUs
RAM1 GB2 GB+
Disk10 GB20 GB+
PHP8.28.4 (production)
Node.js1820
DatabaseMySQL 8 / MariaDB 10.6MariaDB 11
CacheRedis 6Redis 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

  1. Copy the example env: cp .env.example .env
  2. Open .env in your editor and fill in the values below.
  3. 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:

  1. Push code to GitHub from your local machine.
  2. SSH into the VPS and run git pull in /var/www/wolfxcore.
  3. Run php artisan migrate --force.
  4. Run php artisan config:cache && php artisan route:cache && php artisan view:clear.
  5. Run yarn build to rebuild the frontend.
  6. 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.