Well it starts by thinking you did it wrong, and then it turns out you were just impatient.
It feels a little late to the bigger migrations that happened at the tail end of 2022, but I’m glad that I waited until I had time this past spring to set up my own mastodon instance. I have really been enjoying the sense of community there, it really feels like the early Internet back when we all used forums.
Waiting got me a couple of things – first, since everyone wants a mastodon instance now, setting one up is even more of a solved problem.
I ended up using the Linode marketplace to great effect.
However, when I first tried accessing my service, every page gave me a 403 error and I couldn’t get any emails to send for things like registering accounts.
I referenced Chris Hubbs’ website back when I was trying to troubleshoot: https://chrishubbs.com/2022/11/10/setting-up-a-mastodon-instance-on-linode/
Based on my command history, I spent some time evaluating if it were a permissions issue to certain directories, but I’m not confident this was the case in retrospect since Linode’s mastodon install is via Docker and all of those files also exist within the Docker filesystem. I instead think there were some tasks that hung up because I kept restarting the host and that once some hours had passed things were fine.
There are some emails timestamped for some time after I had given up and set the project aside for a moment – it is unclear whether it is simply long minutes or multiple hours but in any case, they started arriving in early-mid April. As I was on something of an out of office break after getting a permanent position secured, I didn’t see them until weeks later.
You’d take the time to be able to freely ignore your inbox too if you could!
25 less /var/log/nginx/access.log
26 ls
27 cd home
28 ls
29 ll mastodon
30 ls -l
31 cd mastodon
32 ls
33 ls -l
34 cd live
35 ls
36 ls -l
37 chmod o=rx /home/mastodon/*
38 ls -l
39 chmod -r o=rx /home/mastodon/*
40 chmod o=rx /home/mastodon/*
41 chmod -R o=rx /home/mastodon/*
42 ls -l
43 tail -f /var/log/nginx/access.log
44 ls
45 less /etc/nginx/nginx.conf
46 less /etc/nginx/
47 less /etc/nginx/sites-enabled/plesiosaur.net.conf
And that’s how Plesiosaur.net was made…
I’ve had www.plesiosaur.net as a domain for years now, since I really like dinosaurs and other prehistoric reptiles like plesiosaurs. As an adult, I’ve learned that tons of discoveries have been made since I was first fascinated as a child. So even though the domain isn’t strictly paleontology oriented, it’s meant for things that fascinate and get people engaged in the world around them. So I’m glad I’m finally using the domain and that the service actually works!
Of course, I like to write nice long posts.
Once I realized the server was working, I raised the post character limit and confirmed it was raised via API but immediately after doing so it did not appear raised in web interface.
Rebuilding mastodon in containerized environment
While editing the files in place clearly works and shows as working as an API response, the javascript compose form file did not update in place.
I was following a guide here, but I ended up needing to reference some additional resources to figure out how to get these changes to persist in the frontend environment.
Additional reources:
- http://stackoverflow.com/questions/61455165/ddg#61476083
- https://guides.rubyonrails.org/v4.0/asset_pipeline.html
The correct answer was to remove the built asset files (clobber) and rebuild from scratch. This forced the react app to redeploy cleanly.
mastodon@195f7f84ba5d:~$ rails webpacker:clobber
Removed webpack output path directory /opt/mastodon/public/packs
mastodon@195f7f84ba5d:~$ bundle exec rails assets:precompile
yarn install v1.22.19
[1/6] Validating package.json...
[2/6] Resolving packages...
success Already up-to-date.
Done in 1.66s.
Compiling...
Compiled all packs in /opt/mastodon/public/packs
Browserslist: caniuse-lite is outdated. Please run:
npx update-browserslist-db@latest
Why you should do it regularly: https://github.com/browserslist/update-db#readme
Command history:
ENV RAILS_ENV="production" \
NODE_ENV="production" \
RAILS_SERVE_STATIC_FILES="true" \
BIND="0.0.0.0"
# Set the run user
USER mastodon
WORKDIR /opt/mastodon
# Precompile assets
RUN OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder rails assets:precompile && \
yarn cache clean
And so, I’ve had a working Mastodon instance since May ninth. I’m already meeting plenty of interesting people and discovering all kinds of great alternatives to juggernaut platforms!
Thank you for reading. Please let me know if there are any clarifications I can make or further questions I can answer either down in the comments, on LinkedIn, or hit me up on Mastodon.