Compare commits
3 commits
b1fc6608c9
...
8c9f487412
Author | SHA1 | Date | |
---|---|---|---|
8c9f487412 | |||
66f16288fc | |||
5ea0205138 |
8 changed files with 146 additions and 19 deletions
46
Dockerfile.pleroma-source
Normal file
46
Dockerfile.pleroma-source
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
FROM elixir:1.11.4-alpine
|
||||||
|
|
||||||
|
ARG PLEROMA_VER=develop
|
||||||
|
ARG UID=911
|
||||||
|
ARG GID=911
|
||||||
|
ENV MIX_ENV=prod
|
||||||
|
|
||||||
|
RUN echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories \
|
||||||
|
&& apk update \
|
||||||
|
&& apk add git gcc g++ musl-dev make cmake file-dev \
|
||||||
|
exiftool imagemagick libmagic ncurses postgresql-client ffmpeg
|
||||||
|
|
||||||
|
RUN addgroup -g ${GID} pleroma \
|
||||||
|
&& adduser -h /pleroma -s /bin/false -D -G pleroma -u ${UID} pleroma
|
||||||
|
|
||||||
|
ARG DATA=/var/lib/pleroma
|
||||||
|
RUN mkdir -p /etc/pleroma \
|
||||||
|
&& chown -R pleroma /etc/pleroma \
|
||||||
|
&& mkdir -p ${DATA}/uploads \
|
||||||
|
&& mkdir -p ${DATA}/static \
|
||||||
|
&& chown -R pleroma ${DATA}
|
||||||
|
|
||||||
|
USER pleroma
|
||||||
|
WORKDIR /pleroma
|
||||||
|
|
||||||
|
RUN git clone -b develop https://git.pleroma.social/pleroma/pleroma.git /pleroma \
|
||||||
|
&& git checkout ${PLEROMA_VER}
|
||||||
|
|
||||||
|
USER root
|
||||||
|
COPY ./minica.pem /usr/local/share/ca-certificates/minica.crt
|
||||||
|
RUN update-ca-certificates
|
||||||
|
|
||||||
|
USER pleroma
|
||||||
|
|
||||||
|
RUN mix local.hex --force \
|
||||||
|
&& mix local.rebar --force \
|
||||||
|
&& mix deps.get --only prod \
|
||||||
|
&& mix deps.compile --only prod \
|
||||||
|
&& mix compile --only prod
|
||||||
|
|
||||||
|
COPY ./files/pleroma.exs config/prod.secret.exs
|
||||||
|
COPY ./files/pleroma_source_entrypoint.sh docker-entrypoint.sh
|
||||||
|
|
||||||
|
EXPOSE 4000
|
||||||
|
|
||||||
|
ENTRYPOINT ["/pleroma/docker-entrypoint.sh"]
|
21
README.md
21
README.md
|
@ -10,8 +10,8 @@ mastodon is TODO.
|
||||||
|
|
||||||
add the following to your `/etc/hosts`
|
add the following to your `/etc/hosts`
|
||||||
```
|
```
|
||||||
127.0.0.1 pleroma.pubtester.local localhost
|
127.0.0.1 pleroma.pubtester.example.net localhost
|
||||||
127.0.0.1 pleroma2.pubtester.local localhost
|
127.0.0.1 pleroma2.pubtester.example.net localhost
|
||||||
```
|
```
|
||||||
|
|
||||||
run
|
run
|
||||||
|
@ -20,3 +20,20 @@ git clone ... && cd pubtester
|
||||||
./pleroma_setup.sh
|
./pleroma_setup.sh
|
||||||
docker-compose up -d pleroma_web pleroma2_web nginx
|
docker-compose up -d pleroma_web pleroma2_web nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
|
then go to `https://pleroma.pubtester.example.net:20000/main/friends`
|
||||||
|
and also `https://pleroma2.pubtester.example.net:20000/main/friends`
|
||||||
|
|
||||||
|
## emit new minica certs
|
||||||
|
|
||||||
|
this is generally for myself: https://github.com/jsha/minica
|
||||||
|
|
||||||
|
`minica -domains 'pubtester.example.net,*.pubtester.example.net'`
|
||||||
|
|
||||||
|
|
||||||
|
## wipe everything
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo rm -rfv ./data
|
||||||
|
./pleroma_setup.sh
|
||||||
|
```
|
||||||
|
|
|
@ -6,14 +6,12 @@ services:
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ['CMD', 'pg_isready', '-U', 'postgres']
|
test: ['CMD', 'pg_isready', '-U', 'postgres']
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/pleroma/postgres14:/var/lib/postgresql/data
|
- ./data/pleroma/postgres15:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
- 'POSTGRES_HOST_AUTH_METHOD=trust'
|
- 'POSTGRES_HOST_AUTH_METHOD=trust'
|
||||||
- 'POSTGRES_USER=pleroma'
|
- 'POSTGRES_USER=pleroma'
|
||||||
- 'POSTGRES_PASSWORD=very_secure_pleroma_password'
|
- 'POSTGRES_PASSWORD=very_secure_pleroma_password'
|
||||||
- 'POSTGRES_DB=pleroma'
|
- 'POSTGRES_DB=pleroma'
|
||||||
#pleroma:
|
|
||||||
# image: git.pleroma.social:5050/pleroma/pleroma:release-2-4-1
|
|
||||||
|
|
||||||
pleroma_web:
|
pleroma_web:
|
||||||
image: pleroma_selfbuilt
|
image: pleroma_selfbuilt
|
||||||
|
@ -39,7 +37,7 @@ services:
|
||||||
- ./data/pleroma/static:/var/lib/pleroma/static
|
- ./data/pleroma/static:/var/lib/pleroma/static
|
||||||
- ./files/pleroma.exs:/etc/pleroma/config.exs:ro
|
- ./files/pleroma.exs:/etc/pleroma/config.exs:ro
|
||||||
environment:
|
environment:
|
||||||
DOMAIN: pleroma.pubtester.local
|
DOMAIN: pleroma.pubtester.example.net
|
||||||
INSTANCE_NAME: Pleroma/pubtester
|
INSTANCE_NAME: Pleroma/pubtester
|
||||||
ADMIN_EMAIL: admin@example.com
|
ADMIN_EMAIL: admin@example.com
|
||||||
NOTIFY_EMAIL: notify@example.com
|
NOTIFY_EMAIL: notify@example.com
|
||||||
|
@ -55,13 +53,14 @@ services:
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ['CMD', 'pg_isready', '-U', 'postgres']
|
test: ['CMD', 'pg_isready', '-U', 'postgres']
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/pleroma2/postgres14:/var/lib/postgresql/data
|
- ./data/pleroma2/postgres15:/var/lib/postgresql/data
|
||||||
environment:
|
environment:
|
||||||
- 'POSTGRES_HOST_AUTH_METHOD=trust'
|
- 'POSTGRES_HOST_AUTH_METHOD=trust'
|
||||||
- 'POSTGRES_USER=pleroma'
|
- 'POSTGRES_USER=pleroma'
|
||||||
- 'POSTGRES_PASSWORD=very_secure_pleroma_password'
|
- 'POSTGRES_PASSWORD=very_secure_pleroma_password'
|
||||||
- 'POSTGRES_DB=pleroma'
|
- 'POSTGRES_DB=pleroma'
|
||||||
pleroma2_web:
|
pleroma2_web:
|
||||||
|
# use pleroma_source_selfbuilt if patching pleroma
|
||||||
image: pleroma_selfbuilt
|
image: pleroma_selfbuilt
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
|
@ -74,8 +73,6 @@ services:
|
||||||
- '127.0.0.1:20710:4000'
|
- '127.0.0.1:20710:4000'
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
# Feel free to remove or override this section
|
|
||||||
# See 'Build-time variables' in README.md
|
|
||||||
args:
|
args:
|
||||||
- "UID=1000"
|
- "UID=1000"
|
||||||
- "GID=1000"
|
- "GID=1000"
|
||||||
|
@ -83,9 +80,12 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/pleroma2/uploads:/var/lib/pleroma/uploads
|
- ./data/pleroma2/uploads:/var/lib/pleroma/uploads
|
||||||
- ./data/pleroma2/static:/var/lib/pleroma/static
|
- ./data/pleroma2/static:/var/lib/pleroma/static
|
||||||
- ./files/pleroma.exs:/etc/pleroma/config.exs:ro
|
- ./files/pleroma.exs:/pleroma/config/prod.secret.exs:ro
|
||||||
|
# dev patches
|
||||||
|
#- /home/luna/git/pleroma/lib/pleroma/formatter.ex:/pleroma/lib/pleroma/formatter.ex:ro
|
||||||
|
#- /home/luna/git/pleroma/deps/linkify/lib/linkify/parser.ex:/pleroma/deps/linkify/lib/linkify/parser.ex:ro
|
||||||
environment:
|
environment:
|
||||||
DOMAIN: pleroma2.pubtester.local
|
DOMAIN: pleroma2.pubtester.example.net
|
||||||
INSTANCE_NAME: Pleroma/pubtester2
|
INSTANCE_NAME: Pleroma/pubtester2
|
||||||
ADMIN_EMAIL: admin@example.com
|
ADMIN_EMAIL: admin@example.com
|
||||||
NOTIFY_EMAIL: notify@example.com
|
NOTIFY_EMAIL: notify@example.com
|
||||||
|
@ -163,12 +163,12 @@ services:
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
aliases:
|
aliases:
|
||||||
- pleroma.pubtester.local
|
- pleroma.pubtester.example.net
|
||||||
- pleroma2.pubtester.local
|
- pleroma2.pubtester.example.net
|
||||||
volumes:
|
volumes:
|
||||||
- ./files/nginx.conf:/etc/nginx/nginx.conf:ro
|
- ./files/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||||
- ./pubtester.local/cert.pem:/etc/nginx/cert.pem:ro
|
- ./pubtester.example.net/cert.pem:/etc/nginx/cert.pem:ro
|
||||||
- ./pubtester.local/key.pem:/etc/nginx/key.pem:ro
|
- ./pubtester.example.net/key.pem:/etc/nginx/key.pem:ro
|
||||||
ports:
|
ports:
|
||||||
- '127.0.0.1:20000:443'
|
- '127.0.0.1:20000:443'
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|
|
@ -36,7 +36,7 @@ http {
|
||||||
# root /mnt/none;
|
# root /mnt/none;
|
||||||
# index index.html index.htm;
|
# index index.html index.htm;
|
||||||
|
|
||||||
# server_name mastodon.pubtester.local;
|
# server_name mastodon.pubtester.example.net;
|
||||||
|
|
||||||
# absolute_redirect off;
|
# absolute_redirect off;
|
||||||
# server_name_in_redirect off;
|
# server_name_in_redirect off;
|
||||||
|
@ -73,7 +73,7 @@ http {
|
||||||
root /mnt/none;
|
root /mnt/none;
|
||||||
index index.html index.htm;
|
index index.html index.htm;
|
||||||
|
|
||||||
server_name pleroma.pubtester.local;
|
server_name pleroma.pubtester.example.net;
|
||||||
|
|
||||||
absolute_redirect off;
|
absolute_redirect off;
|
||||||
server_name_in_redirect off;
|
server_name_in_redirect off;
|
||||||
|
@ -98,7 +98,7 @@ http {
|
||||||
root /mnt/none;
|
root /mnt/none;
|
||||||
index index.html index.htm;
|
index index.html index.htm;
|
||||||
|
|
||||||
server_name pleroma2.pubtester.local;
|
server_name pleroma2.pubtester.example.net;
|
||||||
|
|
||||||
absolute_redirect off;
|
absolute_redirect off;
|
||||||
server_name_in_redirect off;
|
server_name_in_redirect off;
|
||||||
|
|
14
files/pleroma_source_entrypoint.sh
Executable file
14
files/pleroma_source_entrypoint.sh
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/ash
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
echo "-- Waiting for database..."
|
||||||
|
while ! pg_isready -U ${DB_USER:-pleroma} -d postgres://${DB_HOST:-db}:${DB_PORT:-5432}/${DB_NAME:-pleroma} -t 1; do
|
||||||
|
sleep 1s
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "-- Running migrations..."
|
||||||
|
mix ecto.migrate
|
||||||
|
|
||||||
|
echo "-- Starting!"
|
||||||
|
mix phx.server
|
|
@ -2,9 +2,10 @@
|
||||||
#
|
#
|
||||||
# setup pleroma db
|
# setup pleroma db
|
||||||
|
|
||||||
|
set -eux
|
||||||
docker-compose up -d pleroma_db
|
docker-compose up -d pleroma_db
|
||||||
docker-compose up -d pleroma2_db
|
docker-compose up -d pleroma2_db
|
||||||
sleep 10
|
sleep 10 # waiting for databases to warm up
|
||||||
docker-compose exec -i pleroma_db psql -U pleroma -c "CREATE EXTENSION IF NOT EXISTS citext;"
|
docker-compose exec -i pleroma_db psql -U pleroma -c "CREATE EXTENSION IF NOT EXISTS citext;"
|
||||||
docker-compose exec -i pleroma_db psql -U pleroma -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
|
docker-compose exec -i pleroma_db psql -U pleroma -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
|
||||||
docker-compose exec -i pleroma_db psql -U pleroma -c 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp";'
|
docker-compose exec -i pleroma_db psql -U pleroma -c 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp";'
|
||||||
|
@ -14,3 +15,4 @@ docker-compose exec -i pleroma2_db psql -U pleroma -c 'CREATE EXTENSION IF NOT E
|
||||||
docker-compose down
|
docker-compose down
|
||||||
|
|
||||||
docker buildx build -t pleroma_selfbuilt -f ./Dockerfile.pleroma .
|
docker buildx build -t pleroma_selfbuilt -f ./Dockerfile.pleroma .
|
||||||
|
docker buildx build -t pleroma_source_selfbuilt -f ./Dockerfile.pleroma-source .
|
||||||
|
|
21
pubtester.example.net/cert.pem
Normal file
21
pubtester.example.net/cert.pem
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDXzCCAkegAwIBAgIIBFIfZ3oH+twwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
|
||||||
|
AxMVbWluaWNhIHJvb3QgY2EgMmY2YmZlMB4XDTIzMDEyMjIxMTEwMVoXDTI1MDIy
|
||||||
|
MTIxMTEwMVowIDEeMBwGA1UEAxMVcHVidGVzdGVyLmV4YW1wbGUubmV0MIIBIjAN
|
||||||
|
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwRVaBdqT1/VamwA7pAA37bOG9GAW
|
||||||
|
zPXtB6WFg7GdGIhzXuq/qdjoO0HLHNoHP3uqRGrJvA0nJdnTs1gaNBUiNP6303LG
|
||||||
|
OHlIaa5B7tByAW/xtji6DuEhVnibiK3jSP4b6m5A6FDgr8qbjJMzHkrHYa3cN4Im
|
||||||
|
m7fJmHFyKpa6L2CXp+I+DqJt8FJtKfr1sYXkMr9QJdT6IqJ2ZGpH8GFYMoa2m9yz
|
||||||
|
uvBb7+LOm4v2CLLxl8ZJpwB7M/n+Ahf53s0gu0jjhkhSLig2EUsl/XFa0yYu7h9z
|
||||||
|
ZNz4wb/Lrgq5Dcc6JkVMNBR9GBx9VaxITcbNcL9r0vF+s3GkRHDNjddvAwIDAQAB
|
||||||
|
o4GcMIGZMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
|
||||||
|
BQUHAwIwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBQ2y5zeB44/l7zuosGq/xzW
|
||||||
|
cnHuhzA5BgNVHREEMjAwghVwdWJ0ZXN0ZXIuZXhhbXBsZS5uZXSCFyoucHVidGVz
|
||||||
|
dGVyLmV4YW1wbGUubmV0MA0GCSqGSIb3DQEBCwUAA4IBAQCci4kcoW7o6lQxEGKD
|
||||||
|
qganrBdTEVjH95x/EOBhRwscXcPrxocTkUgPSrN1vOvZU144UmcDBIPZtsyyOkBt
|
||||||
|
cy7RQYTYb+/1c2Jn8o6j4Low+B0nnXQE2SUeY61Vw/PmcQ2cM13a7dujBK9XZ2CM
|
||||||
|
5ARFTgPtva34fJC9SZsBbBmCS39VcExysNxpjet9QWN6A+XK/TcaJAFWEiiVckXA
|
||||||
|
AbxKVCxY0DQ103BTz75RkyasE9ocY0hwEyHqhPbg1Z/tyquk6Iskk7YAh0Qk5dTl
|
||||||
|
xUL+o9lOeIUpSraWweyWH8+bjvSiNCYJ5KG3dV9zwEeKmi4sfi9+6EpQ47FoLx9v
|
||||||
|
tiGQ
|
||||||
|
-----END CERTIFICATE-----
|
27
pubtester.example.net/key.pem
Normal file
27
pubtester.example.net/key.pem
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEogIBAAKCAQEAwRVaBdqT1/VamwA7pAA37bOG9GAWzPXtB6WFg7GdGIhzXuq/
|
||||||
|
qdjoO0HLHNoHP3uqRGrJvA0nJdnTs1gaNBUiNP6303LGOHlIaa5B7tByAW/xtji6
|
||||||
|
DuEhVnibiK3jSP4b6m5A6FDgr8qbjJMzHkrHYa3cN4Imm7fJmHFyKpa6L2CXp+I+
|
||||||
|
DqJt8FJtKfr1sYXkMr9QJdT6IqJ2ZGpH8GFYMoa2m9yzuvBb7+LOm4v2CLLxl8ZJ
|
||||||
|
pwB7M/n+Ahf53s0gu0jjhkhSLig2EUsl/XFa0yYu7h9zZNz4wb/Lrgq5Dcc6JkVM
|
||||||
|
NBR9GBx9VaxITcbNcL9r0vF+s3GkRHDNjddvAwIDAQABAoIBAD4ZdeioEiDFAq0T
|
||||||
|
eBsZDuPed6slNHAbMG7jJ3vhphr7189RRO+FmbtlP8Q5w1cBmROEHPnkaRDdbB8k
|
||||||
|
WNkjausMeWcCZQpIx6dlqkL6u5AGxwDKYdzjP2umQq/E7XLOd4AAkdOmH32qdjjS
|
||||||
|
JwC5IEMkPc2EiJJQm//xjLxx2dPed9gz9DMH7Ym7MW4LGNMYP3lCc6fpFKa/LQme
|
||||||
|
FX1+FBi07ZhP7yF93/QXK7s6/kxfvgI/VHWfOQQG6cAXr4MnzW/sC+F5PmFX6W19
|
||||||
|
cdC2bklKbyYdXoRlTQUeA9dGehxUTFm0EDO+MTs0dNn28Ss1YXiuAJvf6iu8SvVq
|
||||||
|
11AUbZECgYEA7TlrmZsmHqqj8gaJekXZSWkGxsJJmWC0w5UVbhUAchROKOZ0bu1O
|
||||||
|
BrfMGy90EfLYjLAnK+Dw4E9kDqwiGit98ZUo5YgVZ5b8tnccVRY6VYO4jm/seyYt
|
||||||
|
qpz4S7WKzJrlbX66bAGyRHIGZdlHTewDf/CITFjANGLiiN9NDtp6tuUCgYEA0F2P
|
||||||
|
Pnd3vHBZ+9cK5E4+wUt1Ys+ObohQIIu3e3GrpX7DnUOP93G65cYN6OfSTcH6ClMj
|
||||||
|
7e8E3F2UI91Ke7WmSJWsnRQrGLYjFaEL6y8QXK/5oiNYcVAOC9MslhV5hLF5afYR
|
||||||
|
w2omgLoIZB44x4ognpUi0xWfYBVbW/zWcWV3B8cCgYAoAjAohucl8ueVkQ6spY0g
|
||||||
|
+WqgKPJawNmbxtAHcdlSZCROd5eZgcJQFb2BtD4iLM/i4m6o0tYtLpaUdumFemJS
|
||||||
|
VTLBi3L4tplGeM45d3c9JusActXyaxz2kmS5+BNBsLoS/nWYc6zKKGT11nBVLwHk
|
||||||
|
GQATyEAaVbcZGHgZkjVyFQKBgCs9PxyXbiGMrx+z4G7ATgWOwy1eJRCK+RXH6KuV
|
||||||
|
SylsxOs9ugJ/d2l3UCuk799zAZBi8HHPyBJy2OsYYPyLFZa6eLegF9Fo+p7ibLbB
|
||||||
|
bYPOgN9EtnXNRxztFbOPgUgoDCoRBl6nCJZuBI/CNcYyw9Ik4LUtJ4Wo6OyN63Jc
|
||||||
|
u/bBAoGAAZ2KYVM4gXUVibCKAzJ7teq4gEPoVbRHvTw25woyIuJtBjRgqv0rstX0
|
||||||
|
pqKsoZcA6nZwLeSnNRpxj2kRt0TAcDIjV45f4iblveRPufuMYYMQveglDVGOf4yh
|
||||||
|
7W97mLdMvtz3UR1OUlywKOB/1KNU9BrtEkYceC1MYS/9BQVkDyo=
|
||||||
|
-----END RSA PRIVATE KEY-----
|
Loading…
Reference in a new issue