mirror of https://github.com/pixelfed/pixelfed
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.5 KiB
3.5 KiB
Pixelfed Docker Compose Setup with serversideup/php container
This setup uses serversideup/php:8.4-fpm-nginx as the base image and is designed to work behind a reverse proxy like Cloudflare Tunnel, or Nginx (Proxy Manager) for HTTPS termination.
Prerequisites
- Docker and Docker Compose installed
- A reverse proxy (e.g., Nginx Proxy Manager) for HTTPS
- Domain name
- Email Provider for sending emails
Quick Start
-
Clone and prepare the privledges
git clone https://github.com/pixelfed/pixelfed cd pixelfed sudo chown -R www-data:www-data storage/ bootstrap/cache/ -
Copy the environment file:
cp .env.docker.example .env -
Update
.envwith your configuration:- Set
APP_KEY( generate with https://laravel-encryption-key-generator.vercel.app/ ) - Update
APP_URL,APP_DOMAIN,ADMIN_DOMAIN,SESSION_DOMAINwith your domain - Set secure database passwords for
DB_PASSWORDandDB_ROOT_PASSWORD - Configure mail settings
- Set
-
Build container
docker compose buildContainer Build Troubleshooting
open /home/username/pixelfed/storage/app/public/m/_v2/xxxxxxxxxxxxxxxxxx/xxxxxxxxxxx-xxxxxxxxxx/xxxxxxxxxxxx: permission deniedor similar might require fixing local permissions.sudo find storage/ -type d -exec chmod 755 {} \; # set all directories to rwx by user/group sudo find storage/ -type f -exec chmod 644 {} \; # set all files to rw by user/group -
Build and start the containers:
docker compose up -d db redis # Bootstrap the database and Redis. # Wait 30 seconds for them to complete first boot. docker compose up -d -
Generate application keys (Critical for Federation) and other tasks:
docker compose exec pixelfed php artisan instance:actor docker compose exec pixelfed php artisan import:cities docker compose exec pixelfed php artisan passport:keys -
Create admin user:
docker compose exec pixelfed php artisan user:create
Reverse Proxy Configuration
Cloudflare Tunnel
- Doco coming soon
Nginx Proxy Manager
- Add a new Proxy Host in Nginx Proxy Manager
- Set the following:
- Domain Names: Your domain (e.g.,
pixelfed.yourdomain.com) - Scheme:
http - Forward Hostname/IP:
pixelfed-app(or the Docker host IP) - Forward Port:
8080 - Enable: Websockets Support, Block Common Exploits
- Domain Names: Your domain (e.g.,
- Configure SSL certificate (Let's Encrypt recommended)
- Add custom Nginx configuration if needed:
client_max_body_size 500M; proxy_read_timeout 300s;
Manual Nginx Configuration
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
client_max_body_size 500M;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
}
}
Useful Commands
# View logs
docker compose logs -f
# Run artisan commands
docker compose exec pixelfed php artisan [command]
# Access container shell
docker compose exec pixelfed bash
# Restart services
docker compose restart
# Stop services
docker compose down
# Stop and remove volumes (WARNING: deletes data)
docker compose down -v