Commit Graph

77 Commits

Author SHA1 Message Date
Scott Idem
d1ed06a4c4 fix: resolve logrotate permission issues in maintenance container 2026-04-03 17:10:22 -04:00
Scott Idem
3c6b67b149 chore: unify timezone and implement containerized log rotation 2026-04-03 17:06:34 -04:00
Scott Idem
bd035f8c17 fix(nginx,gunicorn): raise send_timeout and proxy_send_timeout for long-running endpoints
Nginx was closing the client connection after exactly 60 seconds on requests
like clip_video (ffmpeg, 5-40 min) because send_timeout and proxy_send_timeout
both default to 60s. proxy_read_timeout was already 2100s but the other two
timeouts were still at defaults.

With proxy_buffering off, Nginx holds the write path to the client open as soon
as the upstream connection is established. If the upstream sends no data for 60s
(e.g. ffmpeg processing), Nginx treats the idle write path as stalled and closes
the client connection, logging 499 (Client Closed Request).

Fixed: raise proxy_send_timeout and send_timeout to 2100s to match
proxy_read_timeout in the main location block.

Also raised the Gunicorn default timeout from 30s to 120s in gunicorn_conf.py
as a belt-and-suspenders measure (AE_API_GUNICORN_TIMEOUT env var takes precedence).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 14:05:22 -04:00
Scott Idem
6fd6899879 fix(gunicorn): set control_socket to /dev/shm path
Newer gunicorn (post-23.0.0) added _get_control_socket_path() which
calls os.path.isabs() on the value — crashing when it is None.
Point the socket to /dev/shm (already used for worker_tmp_dir) so it
is writable inside the container and satisfies the new gunicorn code.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 20:24:12 -04:00
Scott Idem
0d81958bfc Cleaning up old legacy files. Sorry, no more Flask. 2026-03-24 15:51:44 -04:00
Scott Idem
8c9d263afb Disable Gunicorn control_socket in FastAPI configs
Gunicorn 25.1.0+ enables a 'control_socket' by default, which creates
a root-owned 'gunicorn.ctl' file in the chdir directory. When this
directory is a volume mount (as in our dev/test setups), it causes
permission errors during Docker build context gathering.

This change explicitly sets 'control_socket = None' to prevent the
creation of this file.
2026-03-24 15:41:54 -04:00
Scott Idem
22efb9c832 More sub domains 2026-03-12 03:00:26 -04:00
Scott Idem
d80e2aa1ff Adding more server names... 2026-03-12 02:04:42 -04:00
Scott Idem
ef54720e78 chore: cleaned up Nginx server_name conflicts and fixed API healthcheck port. 2026-03-12 01:22:44 -04:00
Scott Idem
7afbc6ffa3 feat: implemented scalable regex for Nginx server_names across App and API. 2026-03-11 23:54:27 -04:00
Scott Idem
4c68cd2ce3 feat: added test-demo and test-api domains to Nginx server_name lists. 2026-03-11 23:50:25 -04:00
Scott Idem
a7b6112f4d chore: disabled internal SSL/HTTPS in Nginx configs to support host-level SSL termination. 2026-03-11 23:05:51 -04:00
Scott Idem
50f4ddf39d chore: Remove mounted API config file — now lives in aether_api_fastapi repo
API config is no longer injected via volume mount. app/config.py in the
aether_api_fastapi repo reads all settings directly from env vars (.env).
Updated README to reflect the new config location.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 18:45:18 -04:00
Scott Idem
83770ffc00 chore: add SvelteKit nginx config, clean up Flask upstream, wire AE_APP_REPLICAS
- Add conf/nginx/site-enabled_aether_app_svelte_node.conf (SvelteKit node upstream)
- Clean up site-enabled_aether_flask_gunicorn.conf: remove dead comments, update
  upstream to app-node:3000
- docker-compose.yml: ae_app scale now uses ${AE_APP_REPLICAS:-1} instead of hardcoded 1
2026-03-10 16:11:46 -04:00
Scott Idem
5fd57dc11a chore: Updated ae_api orchestration to use project-internal build context and Dockerfile. 2026-03-10 15:23:13 -04:00
Scott Idem
decba7f7c8 chore: Pruned redundant FastAPI dependencies (watchgod, six, python-dotenv, itsdangerous, baize, async-timeout). 2026-03-10 15:01:38 -04:00
Scott Idem
49539d52c1 chore(env): synchronize env.default and stabilize API config
Updated env.default with self-documenting comments and all active environment variables. Hardened conf/aether_api_config.py to ensure SMTP and FILES_PATH dictionaries are preserved during refactors. Integrated v3 websocket routes into Nginx template.
2026-02-06 13:15:48 -05:00
Scott Idem
f886250ae3 Automation: Final robust DB restore fixes and updated gitignore rules. 2026-01-12 18:33:05 -05:00
Scott Idem
7bd22d1086 Fix: Robust API configuration and password handling. Resolved 502 Bad Gateway. 2026-01-12 18:20:01 -05:00
Scott Idem
5044a4fc5b Ops: Added backup script, dashboard UI, and project cheatsheet. 2026-01-12 17:35:44 -05:00
Scott Idem
7bce390e5f Architecture: Finalized dynamic scaling and Nginx gateway port configuration. 2026-01-12 17:10:16 -05:00
Scott Idem
00092d2058 MariaDB: Parameterized performance settings via .env and docker-compose command flags. 2026-01-12 16:47:12 -05:00
Scott Idem
0b4c13c84b MariaDB: Applied optimized production server.cnf and enabled audit logging. 2026-01-12 16:40:45 -05:00
Scott Idem
9e291ba528 Updates to get FastAPI reasonably up to date. 2024-11-20 15:26:36 -05:00
Scott Idem
2911007b1f Comment out extra servers 2024-10-09 14:00:32 -04:00
Scott Idem
4c458f378a Finally got multiple server names working for Docker in nginx!!! 2024-05-30 22:40:32 -04:00
Scott Idem
294716fefc Enabled poppler-utils for Python pdf2image to work 2024-05-22 19:22:20 -04:00
Scott Idem
341f5ccbee Everything seems to be working with FastAPI 110 now!! Need to work on SQLAlchemy upgrade to 2.0.29 soon. 2024-04-26 17:58:17 -04:00
Scott Idem
43c4dffa9a Tweaking settings... 2024-04-24 16:50:09 -04:00
Scott Idem
f9b5186afc Trial and error fixes... 2024-04-24 16:04:36 -04:00
Scott Idem
fc04c04044 Tweaks to get API to stop hanging? 2024-04-24 11:56:48 -04:00
Scott Idem
648224add7 Enabling "http2 on" for all the sites. 2024-03-30 18:54:41 -04:00
Scott Idem
653f55b64d Checking if this works on Linode 2024-03-30 17:31:16 -04:00
Scott Idem
acf953439f Tweaking things... 2024-03-30 14:15:44 -04:00
Scott Idem
96fbca2b2c I don't know 2024-03-29 19:08:16 -04:00
Scott Idem
74dc0e1a7e No more white API container 2024-03-29 18:31:52 -04:00
Scott Idem
cb584b0734 Now with HTTP2 enabled correctly everywhere. 2024-03-29 17:08:38 -04:00
Scott Idem
90ecc8206a General clean up 2024-03-29 16:46:41 -04:00
Scott Idem
8a4434d0b8 Now with more colors! 2024-03-29 14:51:06 -04:00
Scott Idem
ee4e68ddcb Changing load balancing 2024-03-08 09:10:50 -05:00
Scott Idem
61c49b7f6c Trying to get things to work better. Why are the SQL results getting mixed...??? 2024-03-08 00:39:19 -05:00
Scott Idem
f1a36b2bc4 Working on using a cluster of API servers.... 2024-03-07 21:33:10 -05:00
Scott Idem
4d50418238 Making things easier to configure 2024-02-14 20:27:17 -05:00
Scott Idem
2ac5a39706 Trying to fix a Docker compose bug? 2024-02-14 18:30:01 -05:00
Scott Idem
9fe60c418d Updated the cert filenames and paths 2024-02-13 17:42:20 -05:00
Scott Idem
3a14925540 General updates. Enabled CHOW. 2024-02-13 16:32:38 -05:00
Scott Idem
3c7fb0afdb Adding in ImageMagick and ffmpeg related tools 2023-11-10 17:29:03 -05:00
Scott Idem
c897f4b439 Getting rid of possible host names in Nginx conf 2023-10-20 14:05:03 -04:00
Scott Idem
040fdfe2ae General config clean up. 2023-10-19 19:15:14 -04:00
Scott Idem
b17420e584 General config clean up. 2023-10-19 18:58:11 -04:00