Back to Wekan

Sandstorm

docs/Platforms/FOSS/Sandstorm/Sandstorm.md

10.3310.7 KB
Original Source

1. Backup Sandstorm

  1. Please first backup your Sandstorm https://docs.sandstorm.io/en/latest/administering/backups/
  2. Please first download all of your grains to .zip files from top menu row down arrow button, just in case.

2. Upgrade Sandstorm WeKan

Backup your Sandstorm first ! See above !

This new Sandstorm WeKan uses fork of FerretDB v1 SQLite at https://github.com/wekan/FerretDB

  • FerretDB is drop-in replacement for MongoDB 7 Server
  • FerretDB implements MongoDB 7 server wire protocol
  • FerretDB converts MongoDB Javascript queries to SQLite SQL queries
  • FerretDB saves data to SQLite database
  • Fork has additional MongoDB features
  • Fork is maintained by xet7

Migrating old MongoDB 3 data

  • If there is old WeKan data, it is automatically migrated when opening old WeKan grain. Attachments are migrated from MongoDB to files/attachments. Text data is migrated from MongoDB to SQLite at files/db/wekan.sqlite .
  • During migration and startup the grain now shows a "please wait" page that refreshes automatically and opens WeKan as soon as it is ready. Previously, while nothing was listening on the grain's app port, the browser showed an error that the page can not be opened embedded in another page, and you had to close the grain and open it again; a small bridge server on the app port (sandstorm-src/migration-bridge.js, run by the grain launcher across the whole migration and handoff) now keeps the grain framed so that error no longer appears.

All Boards page

  • WeKan starts at All Boards page Favorites
  • All your boards are at first at Remaining, until you Star to have your board at Favorites
  • You can move boards from Remaining to your personal Workspaces or Sub-Workspaces

After migrating, free some disk space

  • If after migrating you would like to free disk space of WeKan grain by deleting old MongoDB raw database files
  • At right top corner, click your WeKan username at WeKan board (not at Sandstorm black backround) / Member Settings / Admin Panel / Attachments / Sandstorm / Delete raw MongoDB database files.

Cover image

  • You can enable it for minicard and card at: Right Sidebar/Board Settings/Card Settings/Cover Image (at bottom of Card Settings list).

Download Official Version

Download Newest Test Version

  1. Please backup first.
  2. Go to Sandstorm Test App Loader
  3. Copy newest wekan.spk URL from https://github.com/wekan/wekan/releases to Sandstorm Test App Loader page
  4. Write your Sandstorm Instance URL to Sandstorm Test Loader page
  5. Click Install
  6. Later, newest WeKan will also be added to Experimental and Official Sandstorm Store.

About CloudFlare and uploading wekan.spk file

  • If your Sandstorm you use CloudFlare, there may be 100 MB file size upload limit, it prevents uploading wekan.spk as file to your Sandstorm
  • So instead use above Sandstorm Test App Loader to install Newest Test Version

Sandstorm Radicale: Calendars and Contacts

  • 2025-08-05
    • Exporting Calendar and Contacts from Google Calendar and Google Contacts to Sandstorm Radicale works.
    • Importing Calendar .ics file back to Google Calendar does not work, because .ics file size is 2.1 MB. Google Calendar has problems importing .ics files bigger than 1 MB, it would need manual splitting to multiple files. Sandstorm Radicale can import .ics file 2.1 MB successfully.

Sandstorm CloudFlare DNS settings

Sandstorm works when configured to full domain, with CloudFlare SSL/TLS, with Caddy. Not subdomain, not sub-url, and not with Let's Encrypt that AFAIK does not support wildcard SSL/TLS.

Source: https://github.com/sandstorm-io/sandstorm/issues/3714#issuecomment-2366866243

For me, it works at CloudFlare DNS using TLS Strict checking and DNS setting clicking to orange cloud icon to make TLS proxy with Origin certificate, that is at /etc/caddy/certs/example.com.pem with above private key and below cert.

DNS records:

* A example.com ip-address
@ A example.com ip-address

Caddyfile, proxy to KVM VM that is running Debian and Sandstorm:

# Full domain where Sandstorm login is. Not subdomain. Not sub-url.
*.example.com example.com {
        tls {
                load /etc/caddy/certs
                alpn http/1.1
        }
        # If KVM VM, it's IP address:
        #reverse_proxy 123.123.123.123:80
        # Localhost port 81, when not in KVM VM 
        reverse_proxy 127.0.0.1:81
}

blog.somecompany.com {
        tls {
                load /etc/caddy/certs
                alpn http/1.1
        }
        # Blog hosted at Sandstorm WordPress
        reverse_proxy 127.0.0.1:81
}

othercompany.com {
        tls {
                load /etc/caddy/certs
                alpn http/1.1
        }
        # Website hosted at Sandstorm Hacker CMS
        reverse_proxy 127.0.0.1:81
}

If having Sandstorm inside of KVM VM: Many Snaps on LXC

At /opt/sandstorm/sandstorm.conf is domain where Sandstorm login is, http port etc.

SERVER_USER=sandstorm
PORT=81
MONGO_PORT=6081
BIND_IP=127.0.0.1
BASE_URL=https://example.com
WILDCARD_HOST=*.example.com
UPDATE_CHANNEL=dev
ALLOW_DEV_ACCOUNTS=false
SMTP_LISTEN_PORT=25
#SANDCATS_BASE_DOMAIN=sandcats.io
#HTTPS_PORT=443

Some related info at:

Caddy Webserver Config

I also had to wait that Origin certificate becomes active.

But this worked for me only at CloudFlare. It did not work at FreeDNS of Namecheap.

Also, I still need to write script to fix IP address if Dynamic DNS IP address changes, using CloudFlare API, because my cable modem does not have DDNS option for CloudFlare.

Now that there is also a way to run Sandstorm at Ubuntu, it would be possible for me to move Sandstorm from KVM VM to run directly at host, without VM, and proxy from Caddy to localhost port of Sandstorm.

https://groups.google.com/g/sandstorm-dev/c/4JFhr7B7QZU?pli=1

Debian amd64

Installing Sandstorm works normally

Ubuntu 24.04 amd64

At startup was a lot of errors and saw "Permission denied; name = /proc/self/setgroups"

I found this (run as root):

echo "kernel.apparmor_restrict_unprivileged_userns = 0" >/etc/sysctl.d/99-userns.conf
sysctl --system

And I ran it and restarted the Sandstorm service, everything seemed to work fine. I hope this might be useful to someone.

Source: https://groups.google.com/g/sandstorm-dev/c/4JFhr7B7QZU

Sandstorm Website

Sandstorm Website

If you have any grains at Sandstorm's Oasis montly paid service, please move those to self-hosted, because only Oasis grain hosting part is shutting down - HN. This does not affect any other parts like self-hosting at sandcats.io, App Market, updates, etc.

Works on Ubuntu 64bit, on Debian 64bit.

Security audited, recommended for security critical use on public internet or internal network. Sandstorm Security Features. Sandstorm is completely Open Source, including Blackrock Clustering.

Install to your own server. Automatic updates, tested before release. Sandstorm Wekan has different features than Standalone.

Works

Does not work

Demo

Keep backups

Wekan App

Wekan at experimental or official Sandstorm App Market. Note: Only use official. Experimental versions are broken.

Newest Wekap app .spk file download at https://releases.wekan.team/sandstorm/

Bug reports and Feature Requests

Wekan for Sandstorm bug reports and feature requests

Sandstorm bug reports and feature requests

Building Wekan for Sandstorm

Building Wekan for Sandstorm

Wekan Sandstorm cards to CSV using Python

Wekan Sandstorm cards to CSV using Python

Importing to Trello workaround

It is not possible to import attachments directly from Trello when using Sandstorm version of Wekan. This is because Wekan is in secure sandbox at Sandstorm, and does not yet have Sandstorm-compatible way to import attachments from outside of Sandstorm. You need to:

  1. Install Standalone version of Wekan, for example Docker/Snap/VirtualBox, for example to your own computer
  2. Import board from Trello
  3. Export board as Wekan board. Exported JSON file includes attachments as base64 encoded files.
  4. Import board as Wekan board to Sandstorm.