inovector / mixpost

Mixpost - Self-hosted social media management software (Buffer alternative)
https://mixpost.app
MIT License
979 stars 158 forks source link

Mixpost Lite Server Error 500 #109

Closed Debussch closed 3 weeks ago

Debussch commented 1 month ago

Detailed description

Hello,

I followed the guide to setup the Lite version here: https://docs.mixpost.app/lite/installation/docker/ but customized the docker-compose.yml as I'm already running traefik on my server and switched to letsencryptresolver. However, the app is throwing a 500 server error now.

Here the final docker-compose.yml file:

version: '3.1'

services:
    mixpost:
        image: inovector/mixpost:latest
        labels:
          - traefik.enable=true
          - traefik.http.routers.mixpost.rule=Host(`${APP_DOMAIN}`)
          - traefik.http.routers.mixpost.tls=true
          - traefik.http.routers.mixpost.entrypoints=web,websecure
          - traefik.http.routers.mixpost.tls.certresolver=letsencryptresolver
          - traefik.http.middlewares.mixpost.headers.SSLRedirect=true
          - traefik.http.middlewares.mixpost.headers.STSSeconds=315360000
          - traefik.http.middlewares.mixpost.headers.browserXSSFilter=true
          - traefik.http.middlewares.mixpost.headers.contentTypeNosniff=true
          - traefik.http.middlewares.mixpost.headers.forceSTSHeader=true
          - traefik.http.middlewares.mixpost.headers.SSLHost=`${APP_DOMAIN}`
          - traefik.http.middlewares.mixpost.headers.STSIncludeSubdomains=true
          - traefik.http.middlewares.mixpost.headers.STSPreload=true
          - traefik.http.routers.mixpost.middlewares=mixpost@docker
        volumes:
            - storage:/var/www/html/storage/app
            - logs:/var/www/html/storage/logs
        depends_on:
            - mysql
            - redis 
        restart: unless-stopped
        networks:
            - traefik
            - default
    mysql:
        image: 'mysql/mysql-server:8.0'
        environment:
            MYSQL_DATABASE: ${DB_DATABASE}
            MYSQL_USER: ${DB_USERNAME}
            MYSQL_PASSWORD: ${DB_PASSWORD}
        volumes:
            - 'mysql:/var/lib/mysql'
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p ${DB_PASSWORD}"]
            retries: 3
            timeout: 5s
        restart: unless-stopped
        networks:
            - default
    redis:
        image: 'redis:latest'
        command: redis-server --appendonly yes --replica-read-only no
        volumes:
            - 'redis:/data'
        healthcheck:
            test: ["CMD", "redis-cli", "ping"]
            retries: 3
            timeout: 5s
        restart: unless-stopped 
        networks:
            - default 

volumes:
    traefik_data:
      driver: local
    mysql:
        driver: local
    redis:
        driver: local
    storage:
        driver: local
    logs:
        driver: local

networks:
    traefik:
        external: true
    default:
        driver: bridge

Here is my traefik docker-compose.yml file:

version: "3"

services:
  proxy:
    image: traefik:v3.0
    container_name: "traefik"
    networks:
      - traefik
    ports:
      - "80:80" # HTTP
      - "443:443" # HTTPS
    volumes:
      - ./letsencrypt:/letsencrypt
      - ./users.u:/users/users.u
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped
    command:
      #- "--log.level=DEBUG"
      - "--api=true" # ADDED THIS TO MATCH THE MIXPOST TRAEFIK CONFIG
      - "--api.insecure=true" # ADDED THIS TO MATCH THE MIXPOST TRAEFIK CONFIG
      # Docker configuration
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--providers.docker.network=traefik"
      # Configure entrypoint
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      # SSL configuration
      - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge=true"
      - "--certificatesresolvers.letsencryptresolver.acme.httpchallenge.entrypoint=web"
      #- "--certificatesresolvers.letsencryptresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
      - "--certificatesresolvers.letsencryptresolver.acme.email=mail@domain.tld"
      - "--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json"
      # Global HTTP -> HTTPS
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entryPoint.scheme=https"
      # Enable dashboard
      - "--api.dashboard=true"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dashboard.entrypoints=websecure"
      - "traefik.http.routers.dashboard.tls.certresolver=letsencryptresolver"
      - "traefik.http.routers.dashboard.service=api@internal"
      - "traefik.http.routers.dashboard.middlewares=dashboard-auth"
      - "traefik.http.middlewares.dashboard-auth.basicauth.usersfile=/users/users.u"
      - "traefik.http.routers.dashboard.rule=Host(`traefik.domain.tld`)"
      - "traefik.http.services.dashboard.loadbalancer.server.port=8080"

  portainer:
    image: portainer/portainer-ce
    container_name: "portainer"
    networks:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.portainer.loadbalancer.server.port=9000"
      - "traefik.http.routers.portainer.rule=Host(`portainer.domain.tld`)"
      - "traefik.http.routers.portainer.entrypoints=websecure"
      - "traefik.http.routers.portainer.tls.certresolver=letsencryptresolver"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /data/portaefik/portainer-data:/data
    restart: unless-stopped

networks:
  traefik:
    external:
      name: traefik

I created and added the base64 APP_KEY env variable using this tool: https://mixpost.app/tools/encryption-key-generator

Do you have any ideas to make it work please?

lao9s commented 1 month ago

Hi @Debussch

In the mixpost service, you forgot to add this:

env_file:
       - .env

Please take a look at our example.