The below services can be used to host memos, if you don't administer your own server.
Render.com
Create an account at Render
- Go to your dashboard
Select New Web Service
Scroll down to "Public Git repository"
Paste in the link for the public git repository for memos https://github.com/usememos/memos and press continue
Render will pre-fill most of the fields but you will need to create a unique name for your web service
Adjust region if you want to
Don't touch the "branch", "root directory", and "environment" fields
Click "enter your payment information" and do so
Select the starter plan ($7 a month - a requirement for persistant data - render's free instances spin down when inactive and lose all data)
Click "Create Web Service"
- Wait patiently while the magic happens đ¤ˇââī¸
- After some time (~ 6 min for me) the build will finish and you will see the web service is live
Now it's time to add the disk so your data won't dissappear when the webservice redeploys (redeploys happen automatically when the public repo is updated)
Select the "Disks" tab on the left menu and then click "Add Disk"
Name your disk (can be whatever)
Set the "Mount Path" to
/var/opt/memos
Set the disk size (default is 10GB but 1GB is plenty and can be increased at any time)
Click "Save"
Wait...again...while the webservice redeploys with the persistant disk
aaaand....we're back online!
Time to test! We're going to make sure everything is working correctly.
Click the link in the top left, it should look like
https://the-name-you-chose.onrender.com
- this is your self hosted memos link!Create a Username and Password (remember these) then click "Sign up as Host"
Create a test memo then click save
Sign out of your self-hosted memos
Return to your Render dashboard, click the "Manual Deploy" dropdown button and click "Deploy latest commit" and wait until the webservice is live again (This is to test that your data is persistant)
Once the webservice is live go back to your self-hosted memos page and sign in! (If your memos screen looks different then something went wrong)
Once you're logged in, verify your test memo is still there after the redeploy
Fly.io
provided by @hu3rror/memos-on-fly on GitHub
Prerequisites
- fly.io account
- backblaze account or other B2 service account
- [Optional] If you want to build your own docker image, clone repository from hu3rror/memos-on-fly-build.
Install flyctl
- Follow the instructions to install fly's command-line interface
flyctl
. - log into flyctl.
flyctl auth login
Launch a fly application
do not setup Postgres and do not deploy yet!
flyctl launch
This command creates a fly.toml
file.
Edit your fly.toml
You can take fly.example.toml in this repository as a reference and modify according to the comments.
Details of manual modifications
1. Add a build
section.
[build] image = "ghcr.io/hu3rror/memos-litestream:latest"
2. Add an env
section.
[env] DB_PATH = "/var/opt/memos/memos_prod.db" # do not change LITESTREAM_REPLICA_BUCKET = "<filled_later>" # change to your litestream bucket name LITESTREAM_REPLICA_ENDPOINT = "<filled_later>" # change to your litestream endpoint url LITESTREAM_REPLICA_PATH = "memos_prod.db" # keep the default or change to whatever path you want
3. Configure litestream backups
âšī¸ If you want to use another storage provider, check litestream's "Replica Guides" section and adjust the config as needed.
- Log into B2 and create a bucket. Instead of adjusting the litestream config directly, we will add storage configuration to
fly.toml
. - Now you can set the values of
LITESTREAM_REPLICA_ENDPOINT
andLITESTREAM_REPLICA_BUCKET
to your[env]
section. - Then, create an access key for this bucket. Add the key to fly's secret store (Don't add
<
and>
).flyctl secrets set LITESTREAM_ACCESS_KEY_ID="<keyId>" LITESTREAM_SECRET_ACCESS_KEY="<applicationKey>"
4. Add a persistent volume
Create a persistent volume. Fly's free tier includes
3GB
of storage across your VMs. Sincememos
is very light on storage, a1GB
volume will be more than enough for most use cases. It's possible to change volume size later. A how-to can be found in the "scale persistent volume" section below.flyctl volumes create memos_data --region <your_region> --size <size_in_gb>
For example:
flyctl volumes create memos_data --region hkg --size 1
Attach the persistent volume to the container by adding a
mounts
section tofly.toml
.[[mounts]] source = "memos_data" destination = "/var/opt/memos" processes = ["app"]
5. Change internal_port
in [[services]]
[[services]] internal_port = 5230
6. Deploy to fly.io
flyctl deploy
If all is well, you can now access memos by running flyctl open
. You should see its login page.
If the latest docker image has been released, you can easily upgrade the memo by typing flyctl deploy
in your memos project's folder.
PikaPods.com
Privacy-focused one-click hosting for open source apps. EU and US regions available. Run memos from $1/month with $5 free welcome credit.