unraid_app_templates/lemmy
2024-12-05 15:08:33 +05:30
..
lemmy-server-template Add lemmy/lemmy-server-template 2024-12-05 15:08:33 +05:30
README.md Add lemmy/README.md 2024-12-05 15:06:58 +05:30

Complete Lemmy Setup Guide for Unraid

Prerequisites

  1. Create the following directory structure on your Unraid server:
/mnt/user/appdata/lemmy/
├── config/          # Lemmy configuration
├── postgres/        # PostgreSQL data
└── pictrs/          # Image storage

Step 1: PostgreSQL Setup

  1. Install the Lemmy-Postgres template

  2. Configure these essential variables:

    • POSTGRES_USER: lemmy
    • POSTGRES_PASSWORD: [choose a secure password]
    • POSTGRES_DB: lemmy
    • Data Path: /mnt/user/appdata/lemmy/postgres
    • Port: 5433 (or different if in use)
  3. Start the container and verify it's running by checking logs

Step 2: Pict-rs Setup

  1. Install the Pict-rs template
  2. Configure:
    • API Key: [generate a secure key]
    • Media Path: /mnt/user/appdata/lemmy/pictrs
  3. Note down the API key for later use in Lemmy configuration
  4. Start the container

Step 3: Lemmy Server Setup

  1. Install the Lemmy-Server template
  2. Create /mnt/user/appdata/lemmy/config/lemmy.hjson with this content:
{
  hostname: "your_domain.com"
  port: 8536
  tls_enabled: false # Set to true if using HTTPS
  
  # Database settings
  database: {
    host: "lemmy-postgres"
    port: 5432
    user: "lemmy"
    password: "[your postgres password]"
    database: "lemmy"
    pool_size: 5
  }
  
  # Picture service
  pictrs: {
    url: "http://pict-rs:8080/"
    api_key: "[your pictrs api key]"
  }

  # Rate limits
  rate_limit: {
    message: 180
    message_per_second: 60
    post: 50
    post_per_second: 600
    register: 20
    register_per_second: 3600
    image_upload: 6
    image_upload_per_second: 3600
  }
}
  1. Configure:
    • Config Path: /mnt/user/appdata/lemmy/config
    • WebSocket Port: 8536
  2. Start the container

Step 4: Lemmy UI Setup

  1. Install the Lemmy-UI template
  2. Configure:
    • WebUI Port: 1236
    • Environment Variables:
      • LEMMY_UI_LEMMY_INTERNAL_HOST: lemmy-server:8536
      • LEMMY_UI_LEMMY_EXTERNAL_HOST: your_domain.com (or localhost:1236 for local testing)
      • LEMMY_UI_HTTPS: false (set to true if using HTTPS)
  3. Start the container

If you're using SWAG or another reverse proxy, add this configuration:

location / {
    proxy_pass http://lemmy-ui:1236;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

location /api {
    proxy_pass http://lemmy-server:8536;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # WebSocket support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

location /pictrs {
    proxy_pass http://pict-rs:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    client_max_body_size 20M;
}

Verification Steps

  1. Check all container logs for errors
  2. Access the UI at http://your_server_ip:1236
  3. Create an admin account (first account becomes admin)
  4. Test image upload functionality
  5. Verify WebSocket connection (realtime updates should work)

Troubleshooting

  1. Connection Issues:

    • Verify all containers are running
    • Check container logs for errors
    • Ensure ports are not conflicting
    • Verify network connectivity between containers
  2. Database Issues:

    • Check PostgreSQL logs
    • Verify database credentials in lemmy.hjson
    • Ensure database is properly initialized
  3. Image Upload Issues:

    • Verify Pict-rs API key matches in configuration
    • Check Pict-rs logs
    • Verify storage permissions
  4. UI Issues:

    • Clear browser cache
    • Verify LEMMY_UI_LEMMY_INTERNAL_HOST setting
    • Check browser console for errors

Backup Considerations

Regular backup of these directories is recommended:

  • /mnt/user/appdata/lemmy/postgres/ (Database)
  • /mnt/user/appdata/lemmy/config/ (Configuration)
  • /mnt/user/appdata/lemmy/pictrs/ (Uploaded media)

Security Recommendations

  1. Use strong, unique passwords for:
    • PostgreSQL database
    • Pict-rs API key
    • Admin account
  2. Enable HTTPS if exposed to the internet
  3. Regularly update all containers
  4. Monitor logs for suspicious activity