-
Create a virtual environment (I used Linode)
-
Buy a domain name
my-domain-example.com -
Make the DNS point to the IP of the virtual environment
- This can be done via Linode or via the Domain Registrar
- (I used the domain registrar, i.e., loopia)
-
Pull this repository to the virtual environment
-
Create a
.envfile in the root directory of the project with the following content:DOMAIN=my-domain-example.com LE_EMAIL=[email protected]
-
Create a
.envfile in the./serverdirectory with the following content:JWT_SECRET='<your-secret-key>' JWT_EXPIRATION_TIME='3600' SHARED_PASSWORD_HASH='<the-hashed-password>' SHARED_PASSWORD='<the-real-password>' PORT='3000'
-
If you want to issue a TLS certificate, you can use Let's Encrypt with Certbot.
-
Comment out the
HTTPSserver block in./nginx/templates/site.conf.template. -
Run your Nginx proxy and your webapp as:
docker compose up -d nginx webapp
-
Execute the provisioning command:
make init-cert
-
Uncomment the
HTTPSserver block in./nginx/templates/site.conf.template. -
Follow the remaining instructions (since you've now issued a TLS certificate for your webapp).
-
-
Build the docker image using docker compose:
make build up
-
Access the webpage via
https://my-domain-example.com
Input sanitizationAuthentication and AuthorizationRate limitingBackground processing of thumbnails-- Solved by compiling with a higher optimization level and "awaiting all"Don't retrieve all thumbnails on upload (filter)Introduce TLSMake the gallery-scroll on phone swipeable, not just clickable.Double check the JWT expiration timeCachingPrevent gallery images from being movable.Lazily load high-quality images in galleryMake sure that upload button works.Improve tab name (currently "Vite + Vue + TS")Make larger images/videos uploadable.Remove the annoying "download" message on iPhoneIndicator that images are being processedClose hamburger menu after clicking outside.- Video support
- Support additional mime types