Setup Memos Note-Taking App with MySQL on Docker & S3 Storage --[Reported by Umva mag]

Self-host the open-source, privacy-focused note-taking app Memos using Docker with a MySQL database and integrate with S3 or Cloudflare R2 object storage.

Sep 19, 2024 - 17:49
Setup Memos Note-Taking App with MySQL on Docker & S3 Storage --[Reported by Umva mag]

What is Memos?

Setup Memos Note-Taking App with MySQL on Docker & S3 Storage
Setup Memos Note-Taking App with MySQL on Docker & S3 Storage

Memos is an open-source, privacy-first, and lightweight note-taking application service that allows you to easily capture and share your thoughts.

Memos features:

  • Open-source and free forever
  • Self-hosting with Docker in seconds
  • Pure text with Markdown support
  • Customize and share notes effortlessly
  • RESTful API for third-party integration

Self-Hosting Memos with Docker and MySQL Database

You can self-host Memos quickly using Docker Compose with a MySQL database.

Prerequisites: Docker and Docker Compose installed

You have two options to choose MySQL or MariaDB as a Database both are stable versions and MariaDB consumes less memory than MySQL.

Memos with MySQL 8.0

version: "3.0"

services:

  mysql:
    image: mysql:8.0
    environment:
      TZ: Asia/Kolkata
      MYSQL_ROOT_PASSWORD: memos
      MYSQL_DATABASE: memos-db
      MYSQL_USER: memos
      MYSQL_PASSWORD: memos
    volumes:
      - mysql_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      timeout: 20s
      retries: 10
    restart: always

  memos:
    image: neosmemo/memos:stable
    container_name: memos
    environment:
      MEMOS_DRIVER: mysql
      MEMOS_DSN: memos:memos@tcp(mysql:3306)/memos-db
    depends_on:
      mysql:
        condition: service_healthy
    volumes:
      - ~/.memos/:/var/opt/memos
    ports:
      - "5230:5230"
    restart: always

volumes:
  mysql_data:

Memos with MySQL Database Docker Compose

OR

Memos with MariaDB 11.0

version: "3.0"
services:
  mariadb:
    image: mariadb:11.0
    environment:
      TZ: Asia/Kolkata
      MYSQL_ROOT_PASSWORD: memos
      MYSQL_DATABASE: memos-db
      MYSQL_USER: memos
      MYSQL_PASSWORD: memos
    volumes:
      - mariadb_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      start_period: 10s
      interval: 10s
      timeout: 5s
      retries: 3
    restart: always

  memos:
    image: neosmemo/memos:stable
    container_name: memos
    environment:
      MEMOS_DRIVER: mysql
      MEMOS_DSN: memos:memos@tcp(mariadb:3306)/memos-db
    depends_on:
      mariadb:
        condition: service_healthy
    volumes:
      - ~/.memos/:/var/opt/memos
    ports:
      - "5230:5230"
    restart: always

volumes:
  mariadb_data:

Memos with MariaDB Database Docker Compose

  1. Create a new file named docker-compose.yml and copy the above content.
  2. This sets up a MariaDB 11.0 database service and the Memos app linked to it.
  3. Run docker-compose up -d to start the services in detached mode.
  4. Memos will be available at http://localhost:5230.

The configurations are:
  • mysql service runs MySQL 8.0 with a database named memos-db.
  • memos service runs the latest Memos images, and links to the mysql/mariadb service.
  • MEMOS_DRIVER=mysql tells Memos to use the MySQL database driver.
  • MEMOS_DSN contains the database connection details.
  • The ~/.memos the directory is mounted for data persistence.

You can customize the MySQL password, database name, and other settings by updating the environment variables.

Kubernetes for Noobs
Kubernetes is an open-source system that helps with deploying, scaling, and managing containerized applications.
Setup Memos Note-Taking App with MySQL on Docker & S3 Storage

Configuring S3 Compatible Storage

Memos support integrating with S3-compatible object storage like Amazon S3, Cloudflare R2, DigitalOcean Spaces, etc

To use AWS S3/ Cloudflare's R2 as object storage

Setup Memos Note-Taking App with MySQL on Docker & S3 Storage
Settings > Storage
  1. Create a S3/Cloudflare R2 bucket
  2. Get the API token with object read/write permissions
  3. In Memos Admin Settings > Storage, create a new storage
  4. Enter details like Name, Endpoint, Region, Access Key, Secret Key, Bucket name and Public URL (For Cloudflare R2 set Region = auto)
  5. Save and select this storage
Setup Memos Note-Taking App with MySQL on Docker & S3 Storage
For Cloudflare R2 set Region = auto

With this setup, you can self-host the privacy-focused Memos note app using Docker Compose with a MySQL database, while integrating scalable S3 or R2 storage for persisting data.


13 Tips to Reduce Energy Costs on Your HomeLab Server
HomeLabs can be expensive when it comes to energy costs. It’s easy to accumulate multiple power-hungry servers, networking equipment, and computers.
Setup Memos Note-Taking App with MySQL on Docker & S3 Storage
How to Run Linux Docker Containers Natively on Mac with OrbStack?
Run Linux-based Docker containers natively on macOS with OrbStack’s lightning-fast performance, featherlight resource usage, and simplicity. Get the best Docker experience on Mac.
Setup Memos Note-Taking App with MySQL on Docker & S3 Storage





The following news has been carefully analyzed, curated, and compiled by Umva Mag from a diverse range of people, sources, and reputable platforms. Our editorial team strives to ensure the accuracy and reliability of the information we provide. By combining insights from multiple perspectives, we aim to offer a well-rounded and comprehensive understanding of the events and stories that shape our world. Umva Mag values transparency, accountability, and journalistic integrity, ensuring that each piece of content is delivered with the utmost professionalism.