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.
130 lines
3.5 KiB
Markdown
130 lines
3.5 KiB
Markdown
# 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
|
|
|
|
1. **Clone and prepare the privledges**
|
|
```bash
|
|
git clone https://github.com/pixelfed/pixelfed
|
|
cd pixelfed
|
|
sudo chown -R www-data:www-data storage/ bootstrap/cache/
|
|
```
|
|
|
|
1. **Copy the environment file:**
|
|
```bash
|
|
cp .env.docker.example .env
|
|
```
|
|
|
|
2. **Update `.env` with your configuration:**
|
|
- Set `APP_KEY` ( generate with https://laravel-encryption-key-generator.vercel.app/ )
|
|
- Update `APP_URL`, `APP_DOMAIN`, `ADMIN_DOMAIN`, `SESSION_DOMAIN` with your domain
|
|
- Set secure database passwords for `DB_PASSWORD` and `DB_ROOT_PASSWORD`
|
|
- Configure mail settings
|
|
|
|
3. **Build container**
|
|
```bash
|
|
docker compose build
|
|
```
|
|
|
|
#### Container Build Troubleshooting ####
|
|
|
|
`open /home/username/pixelfed/storage/app/public/m/_v2/xxxxxxxxxxxxxxxxxx/xxxxxxxxxxx-xxxxxxxxxx/xxxxxxxxxxxx: permission denied` or similar might require fixing local permissions.
|
|
```bash
|
|
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
|
|
```
|
|
|
|
4. **Build and start the containers:**
|
|
```bash
|
|
docker compose up -d db redis # Bootstrap the database and Redis.
|
|
# Wait 30 seconds for them to complete first boot.
|
|
docker compose up -d
|
|
```
|
|
|
|
5. **Generate application keys (Critical for Federation) and other tasks:**
|
|
```bash
|
|
docker compose exec pixelfed php artisan instance:actor
|
|
docker compose exec pixelfed php artisan import:cities
|
|
docker compose exec pixelfed php artisan passport:keys
|
|
```
|
|
|
|
6. **Create admin user:**
|
|
```bash
|
|
docker compose exec pixelfed php artisan user:create
|
|
```
|
|
|
|
## Reverse Proxy Configuration
|
|
|
|
### Cloudflare Tunnel
|
|
|
|
1. Doco coming soon
|
|
|
|
### Nginx Proxy Manager
|
|
|
|
1. Add a new Proxy Host in Nginx Proxy Manager
|
|
2. 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
|
|
3. Configure SSL certificate (Let's Encrypt recommended)
|
|
4. Add custom Nginx configuration if needed:
|
|
```nginx
|
|
client_max_body_size 500M;
|
|
proxy_read_timeout 300s;
|
|
```
|
|
|
|
### Manual Nginx Configuration
|
|
|
|
```nginx
|
|
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
|
|
|
|
```bash
|
|
# 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
|
|
```
|