diff --git a/Run-uvicorn-at-boot.md b/Run-uvicorn-at-boot.md index 1815685..136888a 100644 --- a/Run-uvicorn-at-boot.md +++ b/Run-uvicorn-at-boot.md @@ -1,5 +1,9 @@ -Having to run uvicorn manually is annoying and not maintainable. -Instead, you should have `systemd` automatically start it at boot for you. +Having to run uvicorn manually is annoying and not maintainable. +Instead, you should have the system automatically start it at boot for you. + +# Linux + +## systemd We can have `systemd` handle lauching uvicorn by creating a unit file for it. Create a new file called `etebase_server.service` and paste in the following. @@ -33,3 +37,49 @@ $ sudo systemctl enable etebase_server Check to see if it worked! If it didn't work, use the command `sudo systemctl status etebase_server` to see what went wrong. + +# FreeBSD + +## rc script + +Create a rc script in `/usr/local/etc/rc.d/etesync` as it's not part of the base system. + +``` +#!/bin/sh +# +# PROVIDE: etesync +# REQUIRE: NETWORKING LOGIN postgresql +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf to enable etesync: +# +#etesync_enable="YES" + +. /etc/rc.subr + +name="etesync" +rcvar="etesync_enable" + +load_rc_config $name + +: ${etesync_enable="NO"} + +pidfile="/var/run/etesync/etesync.pid" +procname="/usr/local/share/etesync/venv/bin/uvicorn" +command="/usr/sbin/daemon" +command_interpreter="/usr/local/share/etesync/venv/bin/python3.9" +command_args="-f -u www -o /var/log/etesync.log -p ${pidfile} /usr/local/share/etesync/venv/bin/uvicorn etebase_server.asgi:application --uds /var/run/etesync/etesync.socket --env-file /usr/local/etc/etesync/etesync_env --app-dir /usr/local/share/etesync" + +run_rc_command "$1" +``` + +Then place your installation in `/usr/local/share/etesync` and the venv itself in `/usr/local/share/etesync/venv` + +In `/usr/local/etc/etesync/etesync_env`, place the following : +``` +ETEBASE_EASY_CONFIG_PATH=/usr/local/etc/etesync/etesync.ini +``` + +In `/usr/local/etc/etesync/etesync.ini` place your configuration as explained in other wiki sections. + +Then you just have to add `etesync_enable="YES"` in `/etc/rc.conf` or run `rc_enable \ No newline at end of file