Skip to main content
Advanced Search
Search Terms
Content Type

Exact Matches
Tag Searches
Date Options
Updated after
Updated before
Created after
Created before

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

Infrastructure (AWS)

Serverless code functions

RDS

Infrastructure (AWS)

Relational Database Service (Deserted Chateau uses MariaDB databases)

Redis

Infrastructure (AWS)

Cache servers (ElastiCache for Redis)

S3

Infrastructure (AWS)

AWS' cloud file storage solution - example permissions policies, etc

SES

Infrastructure (AWS)

Simple Email Service, for programmatically sending emails

DynamoDB

Infrastructure (AWS)

AWS NoSQL databases

Amazon Web Services (AWS)

Third-party service providers

A cloud services provider, who we use for a large amount of our infrastructure needs.

Frontend libraries

Third-party libraries

Libraries that are mostly used for client-side scripts.

Backend libraries

Third-party libraries

Libraries that are mostly used for Deserted Chateau's server code.

Frontend Class Structure

Code Standards: Frontend

What moron wrote this code? Oh... I did.

Images, Videos & Other Media

Interface Design

Neat, performant display of media, avoiding janky loading, etc.

Transcoding Overview

Media Transcoding

Understanding how to transcode media efficiently is critical to website performance and cost.

Basic Overview

Introduction

An overview of essential things you need to understand before starting.

Webserver Security

Security

Topics related to securing webservers themselves.

Server-side Code Security

Security

Topics specific to ensuring server-side code is secure.

Defending against XSS and CSRF attacks

Security

Specific measures for XSS and CSRF defence.

Server-side caching

Efficiency & Performance

An introduction to server-side caching, dedicated cache servers, and how to make use of them.

Choosing your Infrastructure and Software Providers

Introduction

Explaining the factors you should consider when choosing providers to use.

2023

Development Updates, pre-launch

"Young fool. Only now, at the end, do you understand."

2022

Development Updates, pre-launch

"Fine. I'll do it myself."

Accessing DynamoDB within VPC-enabled Lambda functions

Infrastructure (AWS) DynamoDB

General Webserver Setup

Webserver Documentation

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)

Webserver Documentation

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

Security Webserver Security

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

Webserver Documentation Configuring Apache

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

Webserver Documentation PHP and 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

Local Machine Setup

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

Local Machine Setup

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

Infrastructure (AWS) RDS

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)

Infrastructure (AWS) Lambda

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

Infrastructure (AWS) Lambda

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

Infrastructure (AWS) S3

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

Infrastructure (AWS) S3

For public and protected buckets, add a lifecycle rule: - Filter with prefix "tmpuploads/"- Expire objects 1 day after upload (deletes them permanently)

BunnyCDN

Third-party service providers Bunny

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

Third-party libraries Backend libraries

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

Third-party libraries Frontend libraries

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

Third-party libraries Frontend libraries

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

Third-party libraries Frontend libraries

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

Third-party libraries Frontend libraries

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)

Third-party libraries Frontend libraries

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 ...