feat: add fluxer upstream source and self-hosting documentation

- Clone of github.com/fluxerapp/fluxer (official upstream)
- SELF_HOSTING.md: full VM rebuild procedure, architecture overview,
  service reference, step-by-step setup, troubleshooting, seattle reference
- dev/.env.example: all env vars with secrets redacted and generation instructions
- dev/livekit.yaml: LiveKit config template with placeholder keys
- fluxer-seattle/: existing seattle deployment setup scripts
This commit is contained in:
Vish
2026-03-13 00:55:14 -07:00
parent 5ceda343b8
commit 3b9d759b4b
5859 changed files with 1923440 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
%% Copyright (C) 2026 Fluxer Contributors
%%
%% This file is part of Fluxer.
%%
%% Fluxer is free software: you can redistribute it and/or modify
%% it under the terms of the GNU Affero General Public License as published by
%% the Free Software Foundation, either version 3 of the License, or
%% (at your option) any later version.
%%
%% Fluxer is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
%% GNU Affero General Public License for more details.
%%
%% You should have received a copy of the GNU Affero General Public License
%% along with Fluxer. If not, see <https://www.gnu.org/licenses/>.
-module(fluxer_relay_env).
-export([load/0, get/1, get_optional/1, get_map/0, patch/1, update/1]).
-define(CONFIG_TERM_KEY, {fluxer_relay, runtime_config}).
-type config() :: map().
-spec load() -> config().
load() ->
Config = build_config(),
apply_system_config(Config),
set_config(Config).
-spec get(atom()) -> term().
get(Key) when is_atom(Key) ->
Map = get_map(),
maps:get(Key, Map, undefined).
-spec get_optional(atom()) -> term().
get_optional(Key) when is_atom(Key) ->
?MODULE:get(Key).
-spec get_map() -> config().
get_map() ->
ensure_loaded().
-spec patch(map()) -> config().
patch(Patch) when is_map(Patch) ->
Map = get_map(),
set_config(maps:merge(Map, Patch)).
-spec update(fun((config()) -> config())) -> config().
update(Fun) when is_function(Fun, 1) ->
Map = get_map(),
set_config(Fun(Map)).
-spec set_config(config()) -> config().
set_config(Config) when is_map(Config) ->
persistent_term:put(?CONFIG_TERM_KEY, Config),
Config.
-spec ensure_loaded() -> config().
ensure_loaded() ->
case persistent_term:get(?CONFIG_TERM_KEY, undefined) of
Map when is_map(Map) ->
Map;
_ ->
load()
end.
-spec build_config() -> config().
build_config() ->
fluxer_relay_config:load().
-spec apply_system_config(config()) -> ok.
apply_system_config(Config) ->
apply_logger_config(Config),
ok.
-spec apply_logger_config(config()) -> ok.
apply_logger_config(Config) ->
LoggerLevel = maps:get(logger_level, Config, info),
lager:set_loglevel(lager_console_backend, LoggerLevel),
ok.