Coolify Setup: Application Deployment with Self-Hosted PaaS
Coolify installation, Docker and Git integration, application deployment, database management, SSL certificates, environment variables, and self-hosted PaaS alternative to Heroku/Netlify.
What is self-hosting, why do it, popular self-hosted apps (Nextcloud, Vaultwarden, Jellyfin, Gitea, n8n), Docker setup and comparison with cloud services.
Self-hosting means running applications on your own server that you normally use through cloud services (Google Drive, Dropbox, Netflix, GitHub, etc.). You have full control over your data, get rid of monthly subscription fees, and protect your privacy.
Cloud services analyze your data, create advertising profiles, and may share with third parties. With self-hosting, your data stays only on your server.
In the long run, self-hosting can be much more economical than cloud subscriptions.
Monthly Cost Comparison (approximate):
Cloud Services:
- Google One 2TB: ~$10/month
- Dropbox Plus: ~$12/month
- Netflix Standard: ~$15/month
- GitHub Pro: ~$4/month
- Notion Plus: ~$8/month
Total: ~$49/month
Self-Hosted (REXE VDS):
- Server cost: ~$15-30/month
- All services included
Savings: ~$20-35/month
Cloud services offer you limited customization options. With self-hosting, you can configure the application however you want.
Cloud services can shut down, raise prices, or remove features. With self-hosting, you're independent from these risks.
docker run -d \
--name nextcloud \
-p 8080:80 \
-v nextcloud_data:/var/www/html \
-e MYSQL_HOST=db \
-e MYSQL_DATABASE=nextcloud \
-e MYSQL_USER=nextcloud \
-e MYSQL_PASSWORD=password \
nextcloud:latest
Nextcloud features:
docker run -d \
--name vaultwarden \
-p 8080:80 \
-v vaultwarden_data:/data \
-e DOMAIN=https://vault.example.com \
-e SIGNUPS_ALLOWED=false \
vaultwarden/server:latest
Vaultwarden features:
docker run -d \
--name jellyfin \
-p 8096:8096 \
-v /path/to/media:/media \
-v jellyfin_config:/config \
jellyfin/jellyfin:latest
Jellyfin features:
docker run -d \
--name gitea \
-p 3000:3000 \
-p 222:22 \
-v gitea_data:/data \
gitea/gitea:latest
docker run -d \
--name uptime-kuma \
-p 3001:3001 \
-v uptime_kuma_data:/app/data \
louislam/uptime-kuma:latest
docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-e N8N_BASIC_AUTH_ACTIVE=true \
-e N8N_BASIC_AUTH_USER=admin \
-e N8N_BASIC_AUTH_PASSWORD=password \
n8nio/n8n:latest
docker run -d \
--name ghost \
-p 2368:2368 \
-v ghost_content:/var/lib/ghost/content \
-e url=https://blog.example.com \
ghost:latest
version: '3.8'
services:
nextcloud:
image: nextcloud:latest
ports:
- "8080:80"
volumes:
- nextcloud_data:/var/www/html
environment:
- MYSQL_HOST=db
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=${DB_PASSWORD}
depends_on:
- db
vaultwarden:
image: vaultwarden/server:latest
ports:
- "8081:80"
volumes:
- vaultwarden_data:/data
environment:
- DOMAIN=https://vault.example.com
- SIGNUPS_ALLOWED=false
jellyfin:
image: jellyfin/jellyfin:latest
ports:
- "8096:8096"
volumes:
- /media:/media:ro
- jellyfin_config:/config
uptime-kuma:
image: louislam/uptime-kuma:latest
ports:
- "3001:3001"
volumes:
- uptime_kuma_data:/app/data
db:
image: mariadb:latest
volumes:
- db_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=${DB_PASSWORD}
volumes:
nextcloud_data:
vaultwarden_data:
jellyfin_config:
uptime_kuma_data:
db_data:
| Use Case | CPU | RAM | Storage |
|---|---|---|---|
| Basic (Vaultwarden + Uptime Kuma) | 1 vCPU | 1 GB | 10 GB |
| Medium (+ Nextcloud + Gitea) | 2 vCPU | 2-4 GB | 50+ GB |
| Full Stack (+ Jellyfin + n8n) | 4 vCPU | 4-8 GB | 100+ GB |
| Media-Heavy (4K streaming) | 4+ vCPU | 8+ GB | 500+ GB |
REXE's VDS plans are ideal for getting started with self-hosting. With 2 vCPU and 4 GB RAM, you can comfortably run Nextcloud, Vaultwarden, Gitea, and Uptime Kuma.
Basic Linux command line knowledge and understanding how Docker works is sufficient. Most applications can be installed with a few commands using Docker Compose. You can also use visual Docker management tools like Portainer for beginners. Over time, you can make more complex configurations as you gain experience.
Yes, when properly configured. Basic security measures: use SSL/TLS certificate, set strong passwords, enable 2FA, do regular updates, configure firewall, and close unnecessary ports. Add extra security layers for sensitive applications like Vaultwarden.
Nextcloud offers all the core features of Google Drive (file storage, sync, sharing, calendar, contacts) but your data stays on your own server. With Google Drive, Google can analyze your data. Nextcloud is free and open source, and storage space is only limited by your server's disk capacity.
Vaultwarden (password manager) and Uptime Kuma (monitoring) are recommended for beginners. These applications use few resources, are easy to install, and provide immediate practical benefit. After gaining experience, you can move on to more comprehensive applications like Nextcloud, Gitea, and Jellyfin.
Yes, especially from a KVKK compliance perspective. Data hosted on a server in Turkey is managed in accordance with Turkish data protection legislation. It also provides low latency for users in Turkey. REXE's Istanbul data center offers ideal infrastructure for self-hosting.
Coolify installation, Docker and Git integration, application deployment, database management, SSL certificates, environment variables, and self-hosted PaaS alternative to Heroku/Netlify.
Nextcloud installation with Docker, Apache/Nginx configuration, database setup, SSL certificate, file synchronization, app store, and performance optimization.
Portainer CE installation, Docker and Kubernetes management, stack deployment, volume/network management, user authorization, webhook and GitOps integration.