This commit is contained in:
André Menrath 2023-12-06 19:45:57 +01:00
parent 548e012b7f
commit 0198cbf209
6 changed files with 115 additions and 33 deletions

13
Dockerfile-Mobilizon Normal file
View file

@ -0,0 +1,13 @@
FROM framasoft/mobilizon:3.2.0
# USER root
# # Copy your local SSL certificate
# COPY certs/mkcert_development_CA_216145382363585732815310515133172061250.pem /usr/local/share/ca-certificates/my-cert1.crt
# COPY certs/mkcert_development_CA_251584780348326781939128892019987660627.pem /usr/local/share/ca-certificates/my-cert2.crt
# RUN cat /usr/local/share/ca-certificates/my-cert1.crt >> /etc/ssl/certs/ca-certificates.crt && \
# cat /usr/local/share/ca-certificates/my-cert2.crt >> /etc/ssl/certs/ca-certificates.crt && \
# update-ca-certificates
# USER nobody

28
Makefile Normal file
View file

@ -0,0 +1,28 @@
init:
@bash mobilizon/docker/message.sh "Start"
make start
setup: stop
@bash mobilizon/docker/message.sh "Compiling everything"
docker-compose run --rm mobilizon bash -c 'mix deps.get; npm ci; npm run build:pictures; mix ecto.create; mix ecto.migrate'
migrate:
docker-compose run --rm mobilizon mix ecto.migrate
logs:
docker-compose logs -f
start: stop
@bash mobilizon/docker/message.sh "Starting Mobilizon with Docker"
docker-compose up -d
@bash mobilizon/docker/message.sh "Docker server started"
stop:
@bash mobilizon/docker/message.sh "Stopping Mobilizon"
docker-compose down
@bash mobilizon/docker/message.sh "Mobilizon is stopped"
test: stop
@bash mobilizon/docker/message.sh "Running tests"
docker-compose -f docker-compose.yml -f docker-compose.test.yml run mobilizon mix prepare_test
docker-compose -f docker-compose.yml -f docker-compose.test.yml run mobilizon mix test $(only)
@bash mobilizon/docker/message.sh "Done running tests"
format:
docker-compose run --rm mobilizon bash -c "mix format && mix credo --strict"
@bash mobilizon/docker/message.sh "Code is now ready to commit :)"
target: init

View file

@ -3,21 +3,29 @@
- docker
- `mkcert` to handle locally trusted SSL certificates.
2. Generate a local certificate which is used for both WordPress and Mobilizon.
2. Clone mobilizon source
```bash
git clone https://framagit.org/framasoft/mobilizon.git
```
3. Generate a local certificate which is used for both WordPress and Mobilizon.
```bash
mkcert -install -cert-file certs/lan.pem -key-file certs/lan-key.pem wp.lan mz.lan
```
3. Add the two dummy domains to your /etc/hosts file:
4. Add the two dummy domains to the /etc/hosts file on your machine:
```
127.0.0.1 wp.lan
127.0.0.1 mz.lan
```
4. Start the docker-container via `docker-compose up -d`
5. Go to https://wp.lan and setup WordPress
5. Build mobilizon via running `make setup``
6. Create an administrator user for Mobilizon
5. Start the docker containers via `docker-compose up -d`
6. Go to https://wp.lan and setup WordPress
7. Create an administrator user for Mobilizon
```
docker-compose exec mobilizon mobilizon_ctl users.new "your@email.com" --admin --password "Y0urP4ssw0rd"
docker-compose exec mobilizon mobilizon_ctl users.new "your@email.com" --admin --password "abc"
```

View file

@ -20,42 +20,45 @@ services:
- mz.lan
mobilizon:
image: framasoft/mobilizon:3.2.0
env_file:
- .env
environment:
- MOBILIZON_INSTANCE_NAME
- MOBILIZON_INSTANCE_HOST
- MOBILIZON_INSTANCE_PORT
- MOBILIZON_INSTANCE_EMAIL
- MOBILIZON_REPLY_EMAIL
- MOBILIZON_ADMIN_EMAIL
- MOBILIZON_INSTANCE_REGISTRATIONS_OPEN
- MOBILIZON_DATABASE_USERNAME=${POSTGRES_USER}
- MOBILIZON_DATABASE_PASSWORD=${POSTGRES_PASSWORD}
- MOBILIZON_DATABASE_DBNAME=${POSTGRES_DB}
- MOBILIZON_DATABASE_HOST=mobilizon_db
- MOBILIZON_INSTANCE_SECRET_KEY_BASE
- MOBILIZON_INSTANCE_SECRET_KEY
- MOBILIZON_SMTP_SERVER
- MOBILIZON_SMTP_HOSTNAME
- MOBILIZON_SMTP_PORT
- MOBILIZON_SMTP_SSL
- MOBILIZON_SMTP_USERNAME
- MOBILIZON_SMTP_PASSWORD
- MOBILIZON_SMTP_TLS
container_name: mobilizon
restart: unless-stopped
build:
context: ./mobilizon
dockerfile: Dockerfile
volumes:
- ./public/uploads:/var/lib/mobilizon/uploads
- "./mobilizon:/app"
- /etc/ssl/certs:/etc/ssl/certs:ro
- /etc/ca-certificates/:/etc/ca-certificates/:ro
- ./config.exs:/etc/mobilizon/config.exs:ro
ports:
- 4000:4000
- 5173:5173
depends_on:
- mobilizon_db
environment:
MIX_ENV: "dev"
DOCKER: "true"
MOBILIZON_INSTANCE_NAME: My Local Mobilizon
MOBILIZON_INSTANCE_HOST: mz.lan
MOBILIZON_INSTANCE_HOST_PORT: 4000
MOBILIZON_INSTANCE_PORT: 4000
MOBILIZON_INSTANCE_EMAIL: noreply@mobilizon.me
MOBILIZON_INSTANCE_REGISTRATIONS_OPEN: "true"
MOBILIZON_DATABASE_PASSWORD: mobilizon
MOBILIZON_DATABASE_USERNAME: mobilizon
MOBILIZON_DATABASE_DBNAME: mobilizon
MOBILIZON_DATABASE_HOST: mobilizon_db
MOBILIZON_DATABASE_PORT: 5432
VITE_HOST: ${VITE_HOST:-0.0.0.0}
command: sh -c "mix phx.server"
env_file:
- .env
expose:
- "4000"
wordpress:
build:
context: .
dockerfile: Dockerfile
dockerfile: Dockerfile-WordPress
volumes:
- ./wordpress:/var/www/html
- /etc/ssl/certs:/etc/ssl/certs:ro
@ -93,6 +96,7 @@ services:
mobilizon_db:
image: postgis/postgis:15-3.4
restart: unless-stopped
volumes:
- mobilizon_database_data:/var/lib/postgresql/data
environment:

29
rootCA.pem Normal file
View file

@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIFADCCA2igAwIBAgIRAL1Fd1kL693kmpgG3ImrP1MwDQYJKoZIhvcNAQELBQAw
gZcxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTE2MDQGA1UECwwtYW5k
cmVAYW5kcmUtbWVucmF0aCAoQW5kcsOpIE1lbnJhdGggKFByaXZhdCkpMT0wOwYD
VQQDDDRta2NlcnQgYW5kcmVAYW5kcmUtbWVucmF0aCAoQW5kcsOpIE1lbnJhdGgg
KFByaXZhdCkpMB4XDTIzMTIwNTE0MjQ1OFoXDTMzMTIwNTE0MjQ1OFowgZcxHjAc
BgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTE2MDQGA1UECwwtYW5kcmVAYW5k
cmUtbWVucmF0aCAoQW5kcsOpIE1lbnJhdGggKFByaXZhdCkpMT0wOwYDVQQDDDRt
a2NlcnQgYW5kcmVAYW5kcmUtbWVucmF0aCAoQW5kcsOpIE1lbnJhdGggKFByaXZh
dCkpMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvNixWV9EpcugVQx9
vqVbJHQEsqQHrPvVMyhNt9YblpPgKZ83ka0/PRF0yBjZIS5hTSMKgw8E7hZrC8x0
urIGkQpZh4TAEha9ZOA8udC32SFDUwwyGYYTyLUJEVwr1fZ7x6ChfLBlrUdTpmqa
TnrgP7KzYGKTcft/IJvZaeyGhKguvt6RIsfVX3sB0cO627axObH4ugv4eLlLDz5i
gtjqmGE6SdkxF+6B//8Pc8N95KKq8o+q7+HQwrCOwjpy/qNDM/5czNRAYvfZlpsp
r1hyPobrSGvhtZeAPmOvgu5lKRQarcffvJaIzUUVKbzz8A5LckAFNtJiY/uGXBGT
C5/kr47s/1jCNECu4UeS8Iznk1YQJAGWdMIHEDBjkIkMt1RHvc+SOn7ADJdu2a2y
q5JbbReLBK1x3vs6XMsJl0qNip59VUCsnmvAsquujbD3sCSXcx7kre2KfKGLLxz3
PDh6Q1PSB+JfRmzlE/XHtMzFt1QgzmP2juZ/kUPhbZkfeMp5AgMBAAGjRTBDMA4G
A1UdDwEB/wQEAwICBDASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSp+OhG
6Ob3x1b5/vFGO5M8mcj58jANBgkqhkiG9w0BAQsFAAOCAYEASttRwchg+YGWrQCy
kXL+e/BsvJEEainyaqKPKpqxxprwiGjmc3++p2AQ9lfbfziJjjoa13NPwiwWt8GC
gxbTP28B7NRHKVx2Ub9b+nl+ca9KwLQulurxiP2Wez7ln+Gf/YnzFHHzX7N5TgzG
REdSXIlRtcNhuxFWHa0B2Qxtlr9hJyY5kZFFKXlwkw8VHbhpguizVnwy0rwnkKwu
13tFYuBPQDmyacy36Bki1UxW2K9JogDVNfTbzrDev4D7q7bBskCokvBGJflinV+O
3IN1OQrwfEa7RsgMvb8lmk24lHqqkIjpDsi/MqHM+1YSx6b3+PYD7LcdEtDLVQDL
3hM/TmKVSub+lH7irpgEQmT9fIMBKMiaV0j9bUurXgVu/mYVmQbCzEgd9oNpslOu
Zf8ke6nNm24oSGKju790N5bx7fLCCAGVnUF51UBTmVymOXAv2q7QfQY7WXO3hbTl
vZwkCMVn4t6gy8TBcQhSl/0OFFTdOHTYueRA9RoBzyMCo9Uk
-----END CERTIFICATE-----