🖥️ Migrating to NearlyFreeSpeech.NET

2024 December 15

Earlier this year, I moved my sites off of Neocities and onto NearlyFreeSpeech.NET and posted my notes about doing it to cohost (RIP). john videogames on Bluesky was very kind to send me a cached copy of that post, and here it is!


Uploading your site

  1. If you didn’t already do this for Neocities, download something like FileZilla or Cyberduck.
  2. Make a new connection profile for your site. In the “Protocol” drop-down menu, select SFTP - SSH File Transfer Protocol. (Your program might call this field something else, but in any case look for something that lets you connect with SFTP aka SSH File Transfer Protocol.)
  3. Go to your NearlyFreeSpeech.NET > Sites > whatever site you are setting up. Make a note of your username, password, and the SSH/SFTP Hostname.
  4. Back in your file transfer program, enter the NearlyFreeSpeech SSH/SFTP Hostname in the Host field, then your username and password.
  5. When you connect for the first time, it will ask if you allow the SSH fingerprint. Click “Allow,” and if available, check the “Always Allow” box so it won’t ask again.
  6. Now you can upload your files to your site!
FileZilla's Site Manager open showing a new site with the 'Protocol' setting at 'SFTP - SSH File Transfer Protocol,' the 'host' field filled in with the NearlyFreeSpeech server, and the username and password fields filled out

This is what my FileZilla Site Manager looks like on Linux. It might be different for you, but generally look for these fields and fill them in.


Set up SSL

This is so you can have https:// for your domain name.

  1. Go to NearlyFreeSpeech.NET > Sites > whatever site you are setting up. Make a note of your username, password, and the SSH/SFTP Hostname.
  2. If you are on Windows, hit Win+R, type in cmd and hit Enter. (If you are not on Windows, open whatever terminal you use.)
  3. Type in ssh YOUR_USERNAME@THE_SSH_HOSTNAME. It should ask for your password, enter that in.
  4. Type tls-script.sh and then Enter. It should ask if you agree to the user license, type Y and then Enter again.
  5. It should install a .well-known folder with all the proper SSL files on your site that will let you connect to your domain with https:// instead of only http://.

EDIT: NFS apparently does this automatically for users now, so you probably don’t need to do this step!


Set up domain alias

This is so that https://www.yoursite.com and https://yoursite.com both work.

  1. Go to NearlyFreeSpeech.NET > Sites > whatever site you’re setting up.
  2. Near the top, it should list your NFS subdomain and your www.yoursite.com domain name. Click “Add a New Alias.”
  3. Enter in yoursite.com.
Site information for

You will have yoursite.nfshost.com as its default, and can add your domain and domain aliases here.


Set up error pages

  1. Open a text editor and create a file named .htaccess.
  2. In that file, paste in ErrorDocument 404 /not_found.html (or whatever your filename is).
  3. If you want, you can do the same for 401, 403, and 500 errors.
  4. Save it, then upload it to the root of your site.

Enable MultiViews

This is to have URLs point to pages even without the .html at the end, which is how Neocities does it.

  1. Open your .htaccess file in your text editor.
  2. Paste in Options +MultiViews.
  3. Save and upload to the root of your site.
A .htaccess file opened in a text editor with the ErrorDocument and MultiViews codes added in from this and the previous section

My .htaccess with both the error pages and MultiViews set up.


Set up custom Bluesky username

  1. In your text editor, create a new file named atproto-did.
  2. Go to Bluesky, go to Settings > Account > Handle, then click “I have my own domain.”
  3. Click the “No DNS Panel” tab and then copy the contents of “That contains the following:”. Paste that code into your atproto-did file, and save it.
  4. Upload the atproto-did file into the aforementioned .well-known folder.
  5. Back in Bluesky, click “Verify Text File,” and if that was successful, “Update to (domain name)”
The Bluesky Handle page with the 'No DNS Panel' tab opened, the desired domain name entered in, as well as arrows pointing at a blocked-out bit of code in the 'That contains the following' field and another arrow pointing at the 'Verify Text File' button at the bottom

If you didn't do the SSL setup step from above, just make a folder in your site that's named ".well-known" and upload your "atproto-did" file into there.


Comments