Advanced Search
Search Results
457 total results found
Docs (Technical)
Technical docs and walkthroughs on various bits of server setup and so forth.
Docs (Info)
Info about how Deserted Chateau is built, how it works, and which libraries and third party service providers it uses.
Guides for other art sites
Pointers and advice for other art site owners, guides on how to create a website like Deserted Chateau, etc. This is an eternal WIP, so expect some inaccuracies or out-of-date stuff.
Dev Logs Archive
The logs I've been keeping of Deserted Chateau's development progress, and all the weird problems along the way.
Infrastructure (AWS)
Notes on AWS infrastructure, how to set up the various services, etc.
Local Machine Setup
Setting up remote tools for convenient coding.
Third-party libraries
A list of third-party code libraries we use, what they do, why we use them and how we use them.
Third-party service providers
The third-party service providers Deserted Chateau uses, what they do, why we chose them, and how we use them.
Tech stack
The different languages, frameworks, and so on that Deserted Chateau uses.
Interface Design
A good, well-designed interface is surprisingly hard to make.
Efficiency & Performance
How to make an art website more efficient, so it isn't slow and expensive.
Introduction
A guide on art site infrastructure, finances, and other important matters.
Security
Securing your website from malicious attacks, mischevious users, bots, etc.
Public Documentation Templates
Development Updates, pre-launch
The informal logs/diaries I've been keeping of development progress.
Frequently Asked Questions
This is specifically for FAQs about the tech implementation of Deserted Chateau.
Language pitfalls
What do you mean "true does not equal true"... what planet is this?
Webserver Documentation
Setting them up, configuration of Apache and other software, etc.
Media Transcoding
Resizing and re-encoding images/videos, how to do it, and the importance of it to a media-centric website.
Code Standards: Backend
They'll do their job well... maybe.
Code Standards: Frontend
Trying to maintain consistent frontend anything will drive a person to insanity.
Useful Commands Reference
sudo ./thanos.sh
Infrastructure (Non-AWS)
Notes on setting up and dealing with non-AWS infrastructure, e.g. Bunny/Zoho.
Moderation
Technical solutions and design choices that can be used to help moderate content efficiently.
Lambda
Serverless code functions
RDS
Relational Database Service (Deserted Chateau uses MariaDB databases)
Redis
Cache servers (ElastiCache for Redis)
S3
AWS' cloud file storage solution - example permissions policies, etc
SES
Simple Email Service, for programmatically sending emails
DynamoDB
AWS NoSQL databases
Amazon Web Services (AWS)
A cloud services provider, who we use for a large amount of our infrastructure needs.
Frontend libraries
Libraries that are mostly used for client-side scripts.
Backend libraries
Libraries that are mostly used for Deserted Chateau's server code.
Frontend Class Structure
What moron wrote this code? Oh... I did.
Images, Videos & Other Media
Neat, performant display of media, avoiding janky loading, etc.
Transcoding Overview
Understanding how to transcode media efficiently is critical to website performance and cost.
Basic Overview
An overview of essential things you need to understand before starting.
Webserver Security
Topics related to securing webservers themselves.
Server-side Code Security
Topics specific to ensuring server-side code is secure.
Defending against XSS and CSRF attacks
Specific measures for XSS and CSRF defence.
Server-side caching
An introduction to server-side caching, dedicated cache servers, and how to make use of them.
Choosing your Infrastructure and Software Providers
Explaining the factors you should consider when choosing providers to use.
2023
"Young fool. Only now, at the end, do you understand."
2022
"Fine. I'll do it myself."
Accessing DynamoDB within VPC-enabled Lambda functions
General Webserver Setup
This page focuses on setting up webservers in AWS Lightsail using the Bitnami LAMP stack image, but many of the basic principles apply to setting up similar webservers elsewhere. Setting up Lightsail Bitnami LAMP web servers Step 1: Create a Lightsail LAMP S...
Specifics of setting up Node.js servers for WebSockets use (unused)
Step 1: Stop Apache To use the WebSockets server properly, we want to use port 443 to serve requests, and Apache is going to get in the way of that. If your webserver has Apache installed (e.g. as part of a premade image), stop it. sudo /opt/bitnami/ctlscrip...
Generating SSL/TLS Certificates via LetsEncrypt
Generating SSL certificates when your webservers are behind a load balancer In situations where your webservers aren't behind a load balancer, LetsEncrypt is simple to use (often via certbot) to generate and automatically renew SSL certificates for a given we...
Apache httpd.conf settings
Modifying the Bitnami instance httpd.conf files bitnami.conf (/opt/bitnami/apache/conf/bitnami/bitnami.conf) Make sure to add these modifications to the server's bitnami.conf file (on Bitnami instances, this is in /opt/bitnami/apache/conf/bitnami/bitnami.con...
phpMyAdmin Configuration
Add/replace the lines below within the phpMyAdmin conf file (config.inc.php). To view full table list in phpMyAdmin console, import the create_tables.sql file from the phpmyadmin/sql folder into the RDS database server (i.e. not selecting any specific databas...
Enabling SSH Tunnel on Windows Startup
How to enable tunneling into given webservers on startup, on Windows, instead of having a PuTTY window open just for that purpose. Step 1: Create PuTTY session that will be used for the tunnel To work properly, your session must be authed via PPK, and not re...
Configuring WinSCP
Session Configuration Note that you can import saved sessions from PuTTY, which saves having to re-enter a lot of stuff in WinSCP Change connection protocol to SCP instead of SFTP. In Advanced -> Environment -> SCP/Shell, change shell to "sudo su -", whilst...
RDS Configuration Notes
Warning: auto-generated passwords When creating an RDS instance, if you choose "auto-generate a password", it will only appear in the blue AWS notification after you create it - don't dismiss that notification or you'll have to reset the password! Parameter...
Compiling Node Binaries for ARM architecture (unused)
Note: this isn't used, as despite the lower cost, ARM has significantly lower performance for Deserted Chateau's use case (image resizing). Create an Amazon Linux 2 EC2 instance (t4g.nano will do - make sure it's ARM64 architecture, not X86_64). SSH into it ...
Setting up Lambda for image resizing
Compiling sharp for x86_64 architecture To use Sharp for Node.js properly, we need to compile it on an x86_64 Linux server. Create a Node.js AWS Lightsail instance ($3.5 tier will do the job), then run the following: mkdir sharpfolder cd sharpfolder npm i ...
CORS Policy Example
Replace values in "AllowedOrigins" with your website domain. This will allow fonts to be loaded via the CDN. This policy only needs to be applied to the public bucket containing static library assets (i.e. FontAwesome). Example CORS policy: [ { ...
Bucket Lifecycle Rules
For public and protected buckets, add a lifecycle rule: - Filter with prefix "tmpuploads/"- Expire objects 1 day after upload (deletes them permanently)
BunnyCDN
Homepage https://bunny.net/cdn/ What is it? A CDN provider (Content Delivery Network). CDNs are used by most websites to make serving static content, such as images or videos, faster than delivering them directly from a webserver. A CDN has many servers ac...
BookStack
Homepage https://www.bookstackapp.com/ What is it? Open-source software used for creating nice documentation servers. Why did we choose it? It's open-source, easy to self-host, and does the job without being overly complex. What do we use it for? This ...
jQuery & jQuery Plugins
Homepage https://jquery.com/ What is it? An old, reliable JavaScript library for making Javascript coding easier. Still in use in many websites, but usually developers prefer more modern tools now. Why did we choose it? Largely because I am an ancient fo...
TinyMCE
Homepage https://www.tiny.cloud/ What is it? An open-source rich text editor, allowing users to write fancy formatted text and other content (which normally is a nightmare to do in HTML without e.g. developer knowledge). A lot of companies use TinyMCE's cl...
twemoji
Homepage https://github.com/twitter/twemoji What is it? An open-source emoji library, containing the emoji assets that are used for Twitter. What do we use it for? We use this in conjunction with TinyMCE; instead of using TinyMCE's default emojis, where i...
Tippy.js
Homepage https://atomiks.github.io/tippyjs/ What is it? An open-source library for creating tooltips on web pages in a nice neat fashion. Why did we choose it? It's well maintained, open source, and gives a very nice appearance. Trying to do tooltips manu...
Font Awesome (FA)
Homepage https://fontawesome.com/ What is it? A huge library of icons and emojis, designed to render properly on any webpage in a huge variety of sizes, with or without properties such as animations. It can be hosted via their CDNs or self-hosted. Why did ...