diff --git a/Dockerfile-Mobilizon b/Dockerfile-Mobilizon new file mode 100644 index 0000000..57e135b --- /dev/null +++ b/Dockerfile-Mobilizon @@ -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 diff --git a/Dockerfile b/Dockerfile-WordPress similarity index 100% rename from Dockerfile rename to Dockerfile-WordPress diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..84386ea --- /dev/null +++ b/Makefile @@ -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 diff --git a/README.md b/README.md index 40264f4..7dc9398 100644 --- a/README.md +++ b/README.md @@ -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" ``` diff --git a/docker-compose.yml b/docker-compose.yml index 637fab0..36d1954 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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: diff --git a/rootCA.pem b/rootCA.pem new file mode 100644 index 0000000..edcac84 --- /dev/null +++ b/rootCA.pem @@ -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-----