A cloud backup solution for the rite text editor. Written in Rust using Tide.
You can try out rite-cloud using the instance hosted
here. If you would like to host your own instance of
rite-cloud, read on.
You'll need a working Rust toolchain, and openssl and
sqlite3 installed.
Clone the repository and cd into it.
git clone https://github.com/xyzshantaram/rite-cloud
cd rite-cloud
Since rite uses GitHub for authentication, you will need to create a GitHub app and generate a client secret. Note down the redirect URL you set here, we'll use it later.
Once this is done, you'll need to set the following environment variables:
CLIENT_ID- The client ID of the GitHub app you created in the last step.CLIENT_SECRET- The client secret you generated in the last step.APP_URL- The local URL where you want your app to be, along with the port number. For example:127.0.0.1:8080.TOKEN_URL- The URL where the app will obtain its access token from. Set it tohttps://github.com/login/oauth/access_token.AUTH_URL- The URL where the app will use for authorization. Set it tohttps://github.com/login/oauth/authorize.REDIRECT_URL- The URL that GitHub will redirect to on successful auth. It should be the URL of where your app is hosted, followed by the string/auth/github/authorized. For example, the instance at https://riteapp.co.in has the REDIRECT_URLhttps://riteapp.co.in/auth/github/authorizedTIDE_SECRET- A string to use as the cookie signing secret. MUST be atleast 32 bytes long and should be cryptographically random to be secure.DATABASE_URL- A path to an sqlite db (will be created if it doesn't exist) that will be used as the rite database.FILE_LIMIT- the maximum size of an upload request.
Finally, run the app with cargo run --release. You should be able to open it
by navigating to the APP_URL.
To make your Rite Cloud instance start on boot, carry out the following steps:
cd rite-cloud
cargo build --release
sudo mkdir /opt/rite-cloud
sudo cp "$PWD/target/release/rite-cloud" "/opt/rite-cloud/rite-cloud"
sudo chmod +x /opt/rite-cloud/rite-cloud # make it executable
sudo cp -r "$PWD/res" "/opt/rite-cloud/res"
sudo cp -r "$PWD/templates" "/opt/rite-cloud/templates"sudo mkdir -p /opt/rite-cloud/storageCopy the start-rite-cloud script to /opt/rite-cloud/start-rite-cloud. Open
it with your editor of choice and edit it to add the required environment
variables.
sudo cp install-files/start-rite-cloud /opt/rite-cloud/start-rite-cloud
sudo nano /opt/rite-cloud/start-rite-cloudNext, copy the rite-cloud.service file to /etc/systemd/system and give it
the correct permissions.
sudo cp install-files/rite-cloud.service /etc/systemd/system/rite-cloud.service
sudo chmod 644 /etc/systemd/system/rite-cloud.serviceFinally, enable the service with systemctl.
sudo systemctl enable rite-cloudYou should now have an instance of rite-cloud set up that starts when your server does.
To update your rite-cloud instance, pull the latest copy of the source, build it
(or you can use one of the builds from the releases section), and then copy over
the files to /opt/rite-cloud again.
cd rite-cloud
git pull
cargo build --release
sudo cp "$PWD/target/release/rite-cloud" "/opt/rite-cloud/rite-cloud"
sudo cp -r "$PWD/res" "/opt/rite-cloud/res"
sudo cp -r "$PWD/templates" "/opt/rite-cloud/templates"To uninstall, just disable the service, and remove the /opt/rite-cloud dir
along with /etc/systemd/system/rite-cloud.service.
- async-sqlx-session used under the terms of the MIT license. I've temporarily forked it to fix the version of async-session until Tide updates with the correct fixes to the SQLite session middleware.
- Inconsolata and Crimson Pro used under the OFL
To contribute code, feature ideas or bug reports, open an issue, or fork the repo and make a PR.
If you would like to help out with hosting costs or just like using rite-cloud, you can support me financially using one of the means listed here.