WriteFreely Installation Notes

Ever try installing WriteFreely? The instructions on the official website aren't completely clear and won't work if you're using Ubuntu Server. Here is what worked for me, and hopefully will for you to.

WriteFreely Installation Notes
Photo by Ilya Pavlov / Unsplash

Prior to this blog, I played with WriteFreely. WriteFreely’s installation isn’t as easy as the instructions make it seem. Thus, I used about three different tutorials, as well as other Ubuntu tutorials, to cobble this page together. Here was my setup:

  1. My server is an Unraid system using quite a few dockers. Two of which are essential to making this blog run. One is a Cloudflare DDNS and the other is an NGINX Proxy Manager.
  2. Using an Ubuntu Server virtual machine via ssh.
  3. Downloaded the WriteFreely installation using the following command using wget (which you might have to install): sudo wget https://github.com/writefreely/writefreely/releases/download/v0.13.2/writefreely_0.13.2_linux_amd64.tar.gz
  4. Unzip WriteFreely: sudo tar xvzf writefreely_0.13.2_linux_amd64.tar.gz
  5. Change directory: cd writefreely

Unlike the official directions over on https://writefreely.org/start, you need to put a “./” before the code. I’m not sure why, but I found that on a separate tutorial. Start the WriteFreely configuration using the command: ./writefreely config start

I set mine up as a production environment, used sqlite, and disabled Federation.

You need to edit the config.ini file to fit your needs - I used the nano editor. The first thing that was needed was to change the “bind” address to the IP of my virtual machine. Then the following parameters that you see below were altered. I don’t think the default visibility field actually does anything in single user mode, but I’m trying to get clarification over on the forums - link.

bind                 = 192.168.0.184

local_timeline        = true

default_visibility    = public

  1. Type the following command in: ./writefreely keys generate
  2. To run it, type: sudo ./writefreely
  3. Now to set it up as a service that will run on startup. The instructions on the official install guide were lacking. They get you half way there, but not all the way. We have to create and edit the service file: sudo nano /etc/systemd/system/writefreely.service

Here’s what my file ended up looking like: [Unit]

Description=WriteFreely Instance

After=syslog.target network.target

# If MySQL is running on the same machine, uncomment the following

# line to use it, instead.

#After=syslog.target network.target mysql.service

[Service]

Type=simple

StandardOutput=syslog

StandardError=syslog

WorkingDirectory=/home/noahbershatsky/writefreely

ExecStart=/home/noahbershatsky/writefreely/writefreely

Restart=always

[Install]

WantedBy=multi-user.target

The developer tells you to start the service using the command: sudo systemctl start writefreely

While that does indeed start the service, it doesn’t start it for the next reboot. For that…

  1. Enable the WriteFreely service on reboot: sudo systemctl enable writefreely
  2. Reboot and test it out!

Bonus - Install an FTP Server

  1. sudo apt install vsftpd
  2. sudo systemctl start vsftpd
  3. sudo systemctl enable vsftpd
  4. Find the entry labeled write_enable=NO, and change the value to “YES” by deleting the “#”. sudo nano /etc/vsftpd.conf
  5. Save the file, exit, then restart the FTP service with the following: sudo systemctl restart vsftpd.service