=> 🏡 Home | Back to notes

Monica

Last updated on 27 September 2022

I use a self-hosted Monica [1] instance to keep on top of birthdays and other useful/interesting notes about friends and family.

=> 1

This note documents my setup.

Create a docker-compose.yml file:

version: "3.4"

services:
  monica:
    image: monica:latest
    depends_on:
      - monicadb
    environment:
      - APP_KEY=CHANGEME
      - DB_HOST=monicadb
      - APP_ENV=nonprod # See note below
      - APP_URL=http://CHANGEME
      - APP_TRUSTED_PROXIES=*
      - MAIL_DRIVER=smtp
      - MAIL_HOST=CHANGEME
      - MAIL_PORT=587
      - MAIL_USERNAME=CHANGEME
      - MAIL_PASSWORD=CHANGEME
      - MAIL_ENCRYPTION=tls
      - MAIL_FROM_ADDRESS=CHANGEME
      - MAIL_FROM_NAME=Monica
    volumes:
      - ./monica_data:/var/www/html/storage
    restart: always
    ports:
      - 8082:80

  monicadb:
    image: mysql:5.7
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=true
      - MYSQL_DATABASE=monica
      - MYSQL_USER=homestead
      - MYSQL_PASSWORD=CHANGEME
    volumes:
      - ./mysql:/var/lib/mysql
    restart: always

Note on APP_ENV

When running with APP_ENV=production, Monica enforces HTTPS connections. I run Monica in my Tailscale network without TLS certificates, and so I run Monica in nonprod (which I made up) mode to allow this to work.

As far as I can tell, everything still seems to work OK.

If you run Monica behind a reverse-proxy for which you can configure TLS certficates, you can leave this as production.

Using the app

Bring the service up and navigate to the address you gave it to get started.

=> Back to notes

Proxy Information
Original URL
gemini://wilw.capsule.town/notes/monica.gmi
Status Code
Success (20)
Meta
text/gemini;lang=en-GB
Capsule Response Time
170.080978 milliseconds
Gemini-to-HTML Time
0.325695 milliseconds

This content has been proxied by September (ba2dc).