initial commit
This commit is contained in:
commit
1e6b6ae15e
8 changed files with 2266 additions and 0 deletions
162
.env.docker.example
Normal file
162
.env.docker.example
Normal file
|
@ -0,0 +1,162 @@
|
|||
## Crypto
|
||||
APP_KEY=secretsgohere
|
||||
|
||||
## General Settings
|
||||
APP_NAME="Moe for Solarpunk Pix"
|
||||
APP_ENV=production
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://pix.solarpunk.moe
|
||||
APP_DOMAIN="pix.solarpunk.moe"
|
||||
ADMIN_DOMAIN="pix.solarpunk.moe"
|
||||
SESSION_DOMAIN="pix.solarpunk.moe"
|
||||
|
||||
OPEN_REGISTRATION=true
|
||||
ENFORCE_EMAIL_VERIFICATION=true
|
||||
PF_MAX_USERS=30
|
||||
OAUTH_ENABLED=true
|
||||
|
||||
APP_TIMEZONE=UTC
|
||||
APP_LOCALE=en
|
||||
|
||||
## Pixelfed Tweaks
|
||||
LIMIT_ACCOUNT_SIZE=true
|
||||
MAX_ACCOUNT_SIZE=1000000
|
||||
MAX_PHOTO_SIZE=15000
|
||||
MAX_AVATAR_SIZE=2000
|
||||
MAX_CAPTION_LENGTH=500
|
||||
MAX_BIO_LENGTH=125
|
||||
MAX_NAME_LENGTH=30
|
||||
MAX_ALBUM_LENGTH=4
|
||||
IMAGE_QUALITY=80
|
||||
PF_OPTIMIZE_IMAGES=true
|
||||
PF_OPTIMIZE_VIDEOS=true
|
||||
ADMIN_ENV_EDITOR=false
|
||||
ACCOUNT_DELETION=true
|
||||
ACCOUNT_DELETE_AFTER=false
|
||||
MAX_LINKS_PER_POST=0
|
||||
|
||||
## Instance
|
||||
#INSTANCE_DESCRIPTION=
|
||||
INSTANCE_PUBLIC_HASHTAGS=false
|
||||
#INSTANCE_CONTACT_EMAIL=
|
||||
INSTANCE_PUBLIC_LOCAL_TIMELINE=false
|
||||
#BANNED_USERNAMES=
|
||||
STORIES_ENABLED=false
|
||||
RESTRICTED_INSTANCE=false
|
||||
|
||||
## Mail
|
||||
MAIL_DRIVER=smtp
|
||||
MAIL_HOST=mail
|
||||
MAIL_PORT=25
|
||||
MAIL_FROM_ADDRESS="pixelfed@solarpunk.moe"
|
||||
MAIL_FROM_NAME="Moe for Solarpunk Pixelfed"
|
||||
MAIL_USERNAME=null
|
||||
MAIL_PASSWORD=null
|
||||
MAIL_ENCRYPTION=null
|
||||
|
||||
## Databases (MySQL)
|
||||
DB_CONNECTION=mysql
|
||||
DB_DATABASE=pixelfed_prod
|
||||
DB_HOST=db
|
||||
DB_PASSWORD=pixelfed_db_pass
|
||||
DB_PORT=3306
|
||||
DB_USERNAME=pixelfed
|
||||
# pass the same values to the db itself
|
||||
MYSQL_DATABASE=pixelfed_prod
|
||||
MYSQL_PASSWORD=pixelfed_db_pass
|
||||
MYSQL_RANDOM_ROOT_PASSWORD=true
|
||||
MYSQL_USER=pixelfed
|
||||
|
||||
## Databases (Postgres)
|
||||
#DB_CONNECTION=pgsql
|
||||
#DB_HOST=db
|
||||
#DB_PORT=5432
|
||||
#DB_DATABASE=pixelfed
|
||||
#DB_USERNAME=postgres
|
||||
#DB_PASSWORD=9*K5JFNo
|
||||
#POSTGRES_DB=pixelfed
|
||||
#POSTGRES_USER=postgres
|
||||
#POSTGRES_PASSWORD=9*K5JFNo
|
||||
|
||||
## Cache (Redis)
|
||||
REDIS_CLIENT=phpredis
|
||||
REDIS_SCHEME=tcp
|
||||
REDIS_HOST=redis
|
||||
REDIS_PASSWORD=secrets
|
||||
REDIS_PORT=6379
|
||||
REDIS_DATABASE=0
|
||||
|
||||
## EXPERIMENTS
|
||||
EXP_LC=false
|
||||
EXP_REC=false
|
||||
EXP_LOOPS=false
|
||||
|
||||
## ActivityPub Federation
|
||||
ACTIVITY_PUB=true
|
||||
AP_REMOTE_FOLLOW=true
|
||||
AP_SHAREDINBOX=true
|
||||
AP_INBOX=true
|
||||
AP_OUTBOX=true
|
||||
ATOM_FEEDS=true
|
||||
NODEINFO=true
|
||||
WEBFINGER=true
|
||||
|
||||
## S3
|
||||
FILESYSTEM_DRIVER=local
|
||||
FILESYSTEM_CLOUD=s3
|
||||
PF_ENABLE_CLOUD=true
|
||||
AWS_ACCESS_KEY_ID=secrets
|
||||
AWS_SECRET_ACCESS_KEY=secrets
|
||||
AWS_DEFAULT_REGION=region
|
||||
AWS_BUCKET=bucketname
|
||||
AWS_URL=https://something.something.digitaloceanspaces.com
|
||||
AWS_ENDPOINT=https://something.digitaloceanspaces.com
|
||||
#AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||
|
||||
## Horizon
|
||||
HORIZON_DARKMODE=true
|
||||
|
||||
## COSTAR - Confirm Object Sentiment Transform and Reduce
|
||||
PF_COSTAR_ENABLED=false
|
||||
|
||||
# Media
|
||||
MEDIA_EXIF_DATABASE=false
|
||||
|
||||
## Logging
|
||||
LOG_CHANNEL=stdout
|
||||
|
||||
## Image
|
||||
IMAGE_DRIVER=imagick
|
||||
|
||||
## Broadcasting
|
||||
BROADCAST_DRIVER=redis # log driver for local development
|
||||
|
||||
## Cache
|
||||
CACHE_DRIVER=redis
|
||||
|
||||
## Purify
|
||||
RESTRICT_HTML_TYPES=true
|
||||
|
||||
## Queue
|
||||
QUEUE_DRIVER=redis
|
||||
|
||||
## Session
|
||||
SESSION_DRIVER=redis
|
||||
|
||||
## Trusted Proxy
|
||||
TRUST_PROXIES="*"
|
||||
|
||||
## Passport
|
||||
#PASSPORT_PRIVATE_KEY=
|
||||
#PASSPORT_PUBLIC_KEY=
|
||||
#
|
||||
#
|
||||
|
||||
PF_USER_INVITES=true
|
||||
PF_USER_INVITES_TOTAL_LIMIT=100
|
||||
PF_USER_INVITES_DAILY_LIMIT=10
|
||||
PF_USER_INVITES_MONTHLY_LIMIT=25
|
||||
|
||||
# This needs to be set to false when doing initial migration!
|
||||
# It's awkward! Yeah!
|
||||
ENABLE_CONFIG_CACHE=true
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Secrets!
|
||||
.env.docker
|
39
contrib/docker-nginx.conf
Normal file
39
contrib/docker-nginx.conf
Normal file
|
@ -0,0 +1,39 @@
|
|||
upstream fpm {
|
||||
server pixelfed-app:9000;
|
||||
}
|
||||
|
||||
server {
|
||||
listen ${NGINX_PORT};
|
||||
server_name pix.solarpunk.moe; # change this to your fqdn
|
||||
root /var/www/public; # path to repo/public
|
||||
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
add_header X-Content-Type-Options "nosniff";
|
||||
|
||||
index index.html index.htm index.php;
|
||||
|
||||
charset utf-8;
|
||||
client_max_body_size 32M; # or your desired limit
|
||||
|
||||
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_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_pass fpm;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # or $request_filename
|
||||
}
|
||||
|
||||
location ~ /\.(?!well-known).* {
|
||||
deny all;
|
||||
}
|
||||
}
|
1916
contrib/docker/php.production.ini
Normal file
1916
contrib/docker/php.production.ini
Normal file
File diff suppressed because it is too large
Load diff
15
contrib/docker/start.fpm.sh
Executable file
15
contrib/docker/start.fpm.sh
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Create the storage tree if needed and fix permissions
|
||||
cp -r storage.skel/* storage/
|
||||
chown -R www-data:www-data storage/ bootstrap/ public/
|
||||
|
||||
# Refresh the environment
|
||||
php artisan storage:link
|
||||
php artisan horizon:publish
|
||||
php artisan route:cache
|
||||
php artisan view:cache
|
||||
php artisan config:cache
|
||||
|
||||
# Finally run FPM
|
||||
php-fpm
|
8
contrib/docker/start.nginx.sh
Executable file
8
contrib/docker/start.nginx.sh
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
rm -rf /var/www/public/storage
|
||||
ln -s /var/www/storage/app/public /var/www/public/storage
|
||||
|
||||
chown -R www-data /var/www/public/
|
||||
|
||||
./docker-entrypoint.sh nginx -g "daemon off;"
|
15
contrib/docker/start.php.sh
Executable file
15
contrib/docker/start.php.sh
Executable file
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Create the storage tree if needed and fix permissions
|
||||
cp -r storage.skel/* storage/
|
||||
chown -R www-data:www-data storage/ bootstrap/
|
||||
|
||||
# Refresh the environment
|
||||
php artisan storage:link
|
||||
php artisan horizon:publish
|
||||
php artisan route:cache
|
||||
php artisan view:cache
|
||||
php artisan config:cache
|
||||
|
||||
# Finally run php
|
||||
php
|
109
docker-compose.yml
Normal file
109
docker-compose.yml
Normal file
|
@ -0,0 +1,109 @@
|
|||
---
|
||||
version: '3'
|
||||
|
||||
# In order to set configuration, please use a .env file in
|
||||
# your compose project directory (the same directory as your
|
||||
# docker-compose.yml), and set database options, application
|
||||
# name, key, and other settings there.
|
||||
# A list of available settings is available in .env.example
|
||||
#
|
||||
# The services should scale properly across a swarm cluster
|
||||
# if the volumes are properly shared between cluster members.
|
||||
|
||||
services:
|
||||
## App and Worker
|
||||
pixelfed-app:
|
||||
# Comment to use dockerhub image
|
||||
build:
|
||||
context: .
|
||||
dockerfile: contrib/docker/Dockerfile.fpm
|
||||
image: porttown.solarpunk.moe/pixelfed
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.docker
|
||||
volumes:
|
||||
- app-storage:/var/www/storage
|
||||
- app-bootstrap:/var/www/bootstrap
|
||||
- "./.env.docker:/var/www/.env"
|
||||
networks:
|
||||
internal:
|
||||
external:
|
||||
mail:
|
||||
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
|
||||
worker:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: contrib/docker/Dockerfile.fpm
|
||||
image: porttown.solarpunk.moe/pixelfed
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.docker
|
||||
volumes:
|
||||
- app-storage:/var/www/storage
|
||||
- app-bootstrap:/var/www/bootstrap
|
||||
networks:
|
||||
- internal
|
||||
- mail
|
||||
command: gosu www-data php artisan horizon
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
|
||||
## DB and Cache
|
||||
db:
|
||||
image: mysql:8.0
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- internal
|
||||
command: --default-authentication-plugin=mysql_native_password
|
||||
env_file:
|
||||
- .env.docker
|
||||
volumes:
|
||||
- "db-data:/var/lib/lib/mysql"
|
||||
|
||||
redis:
|
||||
image: redis:5-alpine
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env.docker
|
||||
volumes:
|
||||
- "redis-data:/data"
|
||||
networks:
|
||||
- internal
|
||||
|
||||
nginx:
|
||||
image: nginx
|
||||
restart: always
|
||||
command: /var/www/start.nginx.sh
|
||||
networks:
|
||||
- httpsproxy
|
||||
- external
|
||||
volumes:
|
||||
- ./contrib/docker-nginx.conf:/etc/nginx/templates/default.conf.template
|
||||
- ./contrib/docker/start.nginx.sh:/var/www/start.nginx.sh
|
||||
- ./public:/var/www/public
|
||||
- app-storage:/var/www/storage
|
||||
environment:
|
||||
- LETSENCRYPT_HOST=pix.solarpunk.moe
|
||||
- VIRTUAL_HOST=pix.solarpunk.moe
|
||||
- VIRTUAL_PORT=80
|
||||
- NGINX_PORT=80
|
||||
|
||||
volumes:
|
||||
db-data:
|
||||
redis-data:
|
||||
app-storage:
|
||||
app-bootstrap:
|
||||
|
||||
networks:
|
||||
internal:
|
||||
internal: true
|
||||
external:
|
||||
mail:
|
||||
external: true
|
||||
httpsproxy:
|
||||
external: true
|
Loading…
Reference in a new issue