Nasadenie SScloud na server
Tento návod popisuje nasadenie SScloud na produkčný server (Linux, PHP 8.2+, MySQL/MariaDB).
Požiadavky
- PHP 8.2+ s rozšíreniami: BCMath, Ctype, cURL, DOM, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, GD (pre PDF reporty)
- Composer (správca PHP závislostí)
- Node.js 18+ a npm (pre frontend build)
- MySQL 8.0+ alebo MariaDB 10.6+
- Nginx alebo Apache (webserver)
- Supervisor (pre queue worker — voliteľné)
- Certbot (Let's Encrypt SSL)
Postup inštalácie
1. Klonovanie a závislosti
cd /var/www
git clone https://github.com/brano300/SScloud.git sscloud
cd sscloud
composer install --no-dev --optimize-autoloader
npm install && npm run build
2. Konfigurácia prostredia
cp .env.example .env
php artisan key:generate
Upravte .env:
APP_NAME=SScloud
APP_ENV=production
APP_DEBUG=false
APP_TIMEZONE=Europe/Bratislava
APP_URL=https://cloud.supersolar.sk
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sscloud
DB_USERNAME=sscloud_user
DB_PASSWORD=silne_heslo
MAIL_MAILER=smtp
MAIL_HOST=smtp.vas-provider.sk
MAIL_PORT=587
MAIL_USERNAME=info@supersolar.sk
MAIL_PASSWORD=email_heslo
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=info@supersolar.sk
MAIL_FROM_NAME=SScloud
3. Databáza
mysql -u root -p -e "CREATE DATABASE sscloud CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p -e "CREATE USER 'sscloud_user'@'localhost' IDENTIFIED BY 'silne_heslo';"
mysql -u root -p -e "GRANT ALL ON sscloud.* TO 'sscloud_user'@'localhost';"
php artisan migrate --force
php artisan db:seed --class=PricingPlanSeeder
4. Oprávnenia
chown -R www-data:www-data /var/www/sscloud
chmod -R 755 /var/www/sscloud
chmod -R 775 storage bootstrap/cache
5. Cache (produkcia)
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
6. Nginx konfigurácia
server {
listen 80;
server_name cloud.supersolar.sk;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name cloud.supersolar.sk;
root /var/www/sscloud/public;
ssl_certificate /etc/letsencrypt/live/cloud.supersolar.sk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.supersolar.sk/privkey.pem;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index 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; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
7. SSL certifikát
certbot --nginx -d cloud.supersolar.sk
8. Scheduler (crontab)
crontab -e
Pridajte:
* * * * * cd /var/www/sscloud && php artisan schedule:run >> /dev/null 2>&1
Toto spúšťa:
- Každých 5 min — zber snapshotov z meničov
- Každých 15 min — health check elektrární
- Každú hodinu — OKTE ceny
- Denne 08:00 — kontrola licencií
- Pondelok 09:00 — pripomienky na obnovu licencií
- 1. v mesiaci 07:00 — mesačné reporty
- Nedeľa 03:00 — čistenie starých dát (90 dní)
9. Queue worker (voliteľné — pre emaily a webhooky)
Vytvorte /etc/supervisor/conf.d/sscloud-worker.conf:
[program:sscloud-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/sscloud/artisan queue:work --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/www/sscloud/storage/logs/worker.log
stopwaitsecs=3600
supervisorctl reread
supervisorctl update
supervisorctl start sscloud-worker:*
Aktualizácia
cd /var/www/sscloud
php artisan down
git pull origin main
composer install --no-dev --optimize-autoloader
npm install && npm run build
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan up
Monitoring
- Health check:
GET /api/health— vráti status a verziu - Logy:
storage/logs/laravel.log - Admin panel:
/admin/stats— štatistiky a zdravie systému - Alerty:
/admin/alerts— výpadky, fuse alerty, licencie
Zálohovanie
Odporúčame zálohovať:
- Databázu (denný mysqldump)
.envsúborstorage/priečinok (reporty, logy)
# Príklad dennej zálohy
mysqldump -u sscloud_user -p sscloud | gzip > /backups/sscloud-$(date +%Y%m%d).sql.gz