diff --git a/pica-mobilizon/app/Dockerfile b/pica-mobilizon/app/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..7289efb310156eccb4644e25bce14da75d1ab67c --- /dev/null +++ b/pica-mobilizon/app/Dockerfile @@ -0,0 +1,52 @@ +# inspired from https://framagit.org/Windyo/mobilizon/-/blob/a1e0b9730e9c63de6058c3f5d803b2743efafed4/docker/app/Dockerfile + +# **** Temporary docker image **** +# elixir version MUST match +FROM elixir:1.10.4 as builder +ARG MOBILIZON_GIT_URL +ARG MOBILIZON_GIT_TAG +ARG NODE_V +ENV MIX_ENV prod +ENV INSTANCE_CONFIG prod +RUN apt-get update -y \ + && apt-get install -y apt-utils \ + && curl -sL https://deb.nodesource.com/setup_"$NODE_V".x | bash - \ + && apt-get install -y nodejs build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 python3-pip cmake \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ + && npm install -g yarn wait-on +RUN useradd -ms /bin/bash -p ! mobilizon +USER mobilizon +WORKDIR /home/mobilizon +COPY ./prod.secret.exs /home/mobilizon/build/config/ +RUN git clone -b "$MOBILIZON_GIT_TAG" "$MOBILIZON_GIT_URL" ./build +WORKDIR /home/mobilizon/build +RUN mix local.hex --force \ + && mix local.rebar --force +RUN mix deps.get +RUN mix deps.compile +RUN mix compile +WORKDIR /home/mobilizon/build/js +RUN yarn install \ + && yarn run build +WORKDIR /home/mobilizon/build +RUN rm -rf ./.dockerignore ./.gitignore ./.gitlab-ci.yml ./CHANGELOG.md ./CONTRIBUTING.md ./docker ./docker-compose.test.yml ./docker-compose.yml ./Dockerfile ./docs ./js ./Makefile ./README.md ./SECURITY.md ./setup_db.psql ./support \ + && curl https://dbip.mirror.framasoft.org/files/dbip-city-lite-latest.mmdb --output GeoLite2-City.mmdb -s \ + && mv GeoLite2-City.mmdb /home/mobilizon/build/priv/data/GeoLite2-City.mmdb + +# Final docker image +FROM elixir:1.10.4-alpine +ENV INIT=FALSE \ + ADMIN_EMAIL=test@test.com \ + ADMIN_PASSWORD=passwd \ + MIX_ENV=prod \ + INSTANCE_CONFIG=prod +RUN addgroup -S mobilizongr && adduser -s /bin/bash -S mobilizon -G mobilizongr +RUN apk update && apk add --update git && rm-rf /tmp/* /var/tmp/* +COPY --from=builder /home/mobilizon/build/ /home/mobilizon/live/ +COPY --from=builder /home/mobilizon/.mix/ /home/mobilizon/.mix/ +COPY ./entrypoint.sh /home/mobilizon/entrypoint.sh +RUN chmod +x /home/mobilizon/entrypoint.sh +WORKDIR /home/mobilizon/live +USER mobilizon +ENTRYPOINT [ "/home/mobilizon/entrypoint.sh" ] diff --git a/pica-mobilizon/app/entrypoint.sh b/pica-mobilizon/app/entrypoint.sh new file mode 100755 index 0000000000000000000000000000000000000000..b8245708da86f7ede2f47b6522997d5eaad40d78 --- /dev/null +++ b/pica-mobilizon/app/entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -e +export MIX_ENV=prod +if [ "$INIT" = TRUE ]; then + echo "Initialization. Only run this once." + mix ecto.migrate + mix mobilizon.users.new "$ADMIN_EMAIL" --admin --password "$ADMIN_PASSWORD" + mix phx.server +else + echo "Running normal mode." + mix ecto.migrate --no-deps-check + mix phx.server --no-deps-check +fi + +exec "$@" diff --git a/pica-mobilizon/app/prod.secret.exs b/pica-mobilizon/app/prod.secret.exs new file mode 100644 index 0000000000000000000000000000000000000000..a68297b00713d679ac7f808796a36fe583fa85f9 --- /dev/null +++ b/pica-mobilizon/app/prod.secret.exs @@ -0,0 +1,52 @@ +# Mobilizon instance configuration +# Via Thomas Clavier + +# Warning : cfg is overrided by the ../docker-compose.yml and ../secrets/*.secrets files + +import Config + +config :mobilizon, Mobilizon.Web.Endpoint, + url: [host: System.get_env("MOBILIZON_INSTANCE_HOST", "mobilizon.lan")], + http: [port: System.get_env("MOBILIZON_INSTANCE_LISTEN_PORT", "4000")], + secret_key_base: System.get_env("MOBILIZON_SECRET_KEY_BASE", "ZcvexeC7cnwtKR8ADMBDwrYu2aYHUyjrOu4yA181Z112HNu/I5jyRleo4hoxOMqQ") + +config :mobilizon, Mobilizon.Web.Auth.Guardian, + secret_key: System.get_env("MOBILIZON_SECRET_KEY", "KsdUIvp6hQ7b97yxUZcDQyGH0g4LS3fF0OvIsIATpkKzd1MDvSS4KexWXsjXeMQZ") + +config :mobilizon, :instance, + name: System.get_env("MOBILIZON_INSTANCE_NAME", "Mobilizon"), + description: "Change this to a proper description of your instance", + hostname: System.get_env("MOBILIZON_INSTANCE_HOST", "mobilizon.lan"), + registrations_open: System.get_env("MOBILIZON_INSTANCE_REGISTRATIONS_OPEN", "false"), + demo: false, + allow_relay: true, + federating: true, + email_from: System.get_env("MOBILIZON_INSTANCE_EMAIL", "noreply@mobilizon.lan"), + email_reply_to: System.get_env("MOBILIZON_INSTANCE_EMAIL", "noreply@mobilizon.lan") + +config :mobilizon, Mobilizon.Storage.Repo, + adapter: Ecto.Adapters.Postgres, + username: System.get_env("MOBILIZON_DATABASE_USERNAME", "username"), + password: System.get_env("MOBILIZON_DATABASE_PASSWORD", "password"), + database: System.get_env("MOBILIZON_DATABASE_DBNAME", "mobilizon"), + hostname: System.get_env("MOBILIZON_DATABASE_HOST", "postgres"), + port: System.get_env("MOBILIZON_DATABASE_PORT", "5432"), + pool_size: 10 + +config :mobilizon, Mobilizon.Web.Email.Mailer, + adapter: Bamboo.SMTPAdapter, + server: System.get_env("MOBILIZON_SMTP_SERVER", "localhost"), + hostname: System.get_env("MOBILIZON_SMTP_HOSTNAME", "localhost"), + port: System.get_env("MOBILIZON_SMTP_PORT", "25"), + username: System.get_env("MOBILIZON_SMTP_USERNAME", nil), + password: System.get_env("MOBILIZON_SMTP_PASSWORD", nil), + # can be `:always` or `:never` + tls: :if_available, + allowed_tls_versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"], + # can be `true` + ssl: System.get_env("MOBILIZON_SMTP_SSL", "false"), + retries: 1, + # can be `true` + no_mx_lookups: false, + # can be `:always`. If your smtp relay requires authentication set it to `:always`. + auth: :if_available diff --git a/pica-mobilizon/db/Dockerfile b/pica-mobilizon/db/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ad867be9a5f1599a0f8b312f73b195f4c2b9b4c4 --- /dev/null +++ b/pica-mobilizon/db/Dockerfile @@ -0,0 +1,6 @@ +FROM postgres:12-alpine +ARG POSTGRES_DB +RUN apk update \ + && apk add --update postgis \ + && rm -rf /tmp/* /var/tmp/* +RUN printf "\\c "$POSTGRES_DB" \n CREATE EXTENSION postgis; \n CREATE EXTENSION pg_trgm; \n CREATE EXTENSION unaccent;" > /docker-entrypoint-initdb.d/setup.sql diff --git a/pica-mobilizon/secrets/mobilizon-app.secrets.example b/pica-mobilizon/secrets/mobilizon-app.secrets.example index f0350a218f397b532fcda0402f90afb6c2e9bb8e..02c2ffd0ee605c0a0f97c41fb8b0a279e4a1e706 100644 --- a/pica-mobilizon/secrets/mobilizon-app.secrets.example +++ b/pica-mobilizon/secrets/mobilizon-app.secrets.example @@ -1,4 +1,3 @@ - INIT=FALSE ADMIN_EMAIL=your@email.com ADMIN_PASSWORD=yourpasswordtologin