Skip to content

Minio Guide for HedgeDoc

Note: This guide was written before the renaming. Just replace HackMD with HedgeDoc in your mind 😃 thanks!

  1. First of all you need to setup Minio itself.

    Please refer to the official Minio docs for an production setup.

    For checking it out and development purposes a non-persistent setup is enough:

    docker run --name test-minio --rm -d -p 9000:9000 minio/minio server /data
    

    Please notice this is not for productive use as all your data gets lost when you stop this container

  2. Next step is to get the credentials form the container:

    docker logs test-minio
    

    docker logs

  3. Open http://localhost:9000 and login with the shown credentials.

    minio default view

  4. Create a bucket for HedgeDoc

    minio create bucket

  5. Add a policy for the prefix uploads and make it read-only.

    minio edit policy Open policy editor

    minio policy adding Add policy for uploads

  6. Set credentials and configs for Minio in HedgeDoc's config.json

    "minio": {
      "accessKey": "888MXJ7EP4XXXXXXXXX",
      "secretKey": "yQS2EbM1Y6IJrp/1BUKWq2/XXXXXXXXXXXXXXX",
      "endPoint": "localhost",
      "port": 9000,
      "secure": false
    }
    
    You have to use different values for endpoint and port for a production setup. Keep in mind the endpoint-address has to be public accessible from your browser.

  7. Set bucket name

    "s3bucket": "hedgedoc"
    
  8. Set upload type.

    "imageuploadtype": "minio"
    
  9. Review your config.

    {
      // all your other config…
      "minio": {
        "accessKey": "888MXJ7EP4XXXXXXXXX",
        "secretKey": "yQS2EbM1Y6IJrp/1BUKWq2/XXXXXXXXXXXXXXX",
        "endPoint": "localhost",
        "port": 9000,
        "secure": false
      },
      "s3bucket": "hedgedoc",
      "imageuploadtype": "minio"
    }
    
  10. If you were using filesystem before

and you want to migrate assets to minio.

You could use a convenience script located in bin/migrate_from_fs_to_minio.

Be careful, read carefully what it does, it was not tested in all environments.

Take it as an inspiration to make your own migration script.