mirror of
https://github.com/remnawave/node.git
synced 2026-05-13 12:06:38 +00:00
refactor: update entrypoint
This commit is contained in:
parent
69b1bb2987
commit
48444f3c36
6 changed files with 27 additions and 19 deletions
|
|
@ -1,22 +1,30 @@
|
|||
#!/bin/sh
|
||||
|
||||
rm -f /run/remnawave-internal-*.sock 2>/dev/null
|
||||
rm -f /run/supervisord-*.sock 2>/dev/null
|
||||
rm -f /run/supervisord-*.pid 2>/dev/null
|
||||
|
||||
echo "[Entrypoint] Starting entrypoint script..."
|
||||
|
||||
generate_random() {
|
||||
tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 64
|
||||
}
|
||||
|
||||
RNDSTR=$(head -c 20 /dev/urandom | xxd -p | head -c 10)
|
||||
SUPERVISORD_USER=$(generate_random)
|
||||
SUPERVISORD_PASSWORD=$(generate_random)
|
||||
INTERNAL_REST_TOKEN=$(generate_random)
|
||||
SOCKETS_RNDSTR=$(head -c 20 /dev/urandom | xxd -p | head -c 10)
|
||||
|
||||
INTERNAL_SOCKET_PATH=/run/remnawave-internal-${RNDSTR}.sock
|
||||
SUPERVISORD_SOCKET_PATH=/run/supervisord-${RNDSTR}.sock
|
||||
SUPERVISORD_PID_PATH=/run/supervisord-${RNDSTR}.pid
|
||||
|
||||
export SUPERVISORD_USER
|
||||
export SUPERVISORD_PASSWORD
|
||||
export INTERNAL_REST_TOKEN
|
||||
export SOCKETS_RNDSTR
|
||||
|
||||
echo "[Credentials] OK"
|
||||
export INTERNAL_SOCKET_PATH
|
||||
export SUPERVISORD_SOCKET_PATH
|
||||
export SUPERVISORD_PID_PATH
|
||||
|
||||
supervisord -c /etc/supervisord.conf &
|
||||
echo "[Entrypoint] Supervisord started successfully"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
export const XRAY_INTERNAL_API_CONTROLLER = 'internal';
|
||||
export const XRAY_INTERNAL_API_PATH = '/get-config';
|
||||
export const XRAY_INTERNAL_FULL_PATH = `/${XRAY_INTERNAL_API_CONTROLLER}${XRAY_INTERNAL_API_PATH}`;
|
||||
export function getXrayInternalApiSocketPath(rndStr: string): string {
|
||||
return `/run/remnawave-internal-${rndStr}.sock`;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ import { InternalModule } from './modules/internal/internal.module';
|
|||
imports: [ConfigModule],
|
||||
inject: [ConfigService],
|
||||
useFactory: (configService: ConfigService) => ({
|
||||
connectionUrl: `http://unix:/run/supervisord-${configService.getOrThrow<string>('SOCKETS_RNDSTR')}.sock:/RPC2`,
|
||||
connectionUrl: `http://unix:${configService.getOrThrow<string>('SUPERVISORD_SOCKET_PATH')}:/RPC2`,
|
||||
options: {
|
||||
username: configService.getOrThrow<string>('SUPERVISORD_USER'),
|
||||
password: configService.getOrThrow<string>('SUPERVISORD_PASSWORD'),
|
||||
|
|
|
|||
|
|
@ -20,7 +20,9 @@ export const configSchema = z
|
|||
INTERNAL_REST_TOKEN: z.string(),
|
||||
SUPERVISORD_USER: z.string(),
|
||||
SUPERVISORD_PASSWORD: z.string(),
|
||||
SOCKETS_RNDSTR: z.string(),
|
||||
INTERNAL_SOCKET_PATH: z.string(),
|
||||
SUPERVISORD_SOCKET_PATH: z.string(),
|
||||
SUPERVISORD_PID_PATH: z.string(),
|
||||
})
|
||||
.superRefine((data, ctx) => {
|
||||
if (data.SECRET_KEY) {
|
||||
|
|
|
|||
15
src/main.ts
15
src/main.ts
|
|
@ -19,7 +19,7 @@ import { getStartMessage } from '@common/utils/get-start-message';
|
|||
import { isDevelopment } from '@common/utils/is-development';
|
||||
import { NotFoundExceptionFilter } from '@common/exception';
|
||||
import { customLogFilter } from '@common/utils/filter-logs';
|
||||
import { getXrayInternalApiSocketPath, XRAY_INTERNAL_FULL_PATH } from '@libs/contracts/constants';
|
||||
import { XRAY_INTERNAL_FULL_PATH } from '@libs/contracts/constants';
|
||||
import { REST_API, ROOT } from '@libs/contracts/api';
|
||||
|
||||
import { AppModule } from './app.module';
|
||||
|
|
@ -44,9 +44,10 @@ const logger = createLogger({
|
|||
});
|
||||
|
||||
async function bootstrap(): Promise<void> {
|
||||
const sockerName = getXrayInternalApiSocketPath(process.env.SOCKETS_RNDSTR!);
|
||||
if (fs.existsSync(sockerName)) {
|
||||
fs.unlinkSync(sockerName);
|
||||
const internalSocketPath = process.env.INTERNAL_SOCKET_PATH!;
|
||||
|
||||
if (fs.existsSync(internalSocketPath)) {
|
||||
fs.unlinkSync(internalSocketPath);
|
||||
}
|
||||
|
||||
await initializeMTLSCerts();
|
||||
|
|
@ -116,7 +117,7 @@ async function bootstrap(): Promise<void> {
|
|||
httpServer.handle(req, res, next);
|
||||
});
|
||||
|
||||
const internalServer = internalApp.listen(sockerName);
|
||||
const internalServer = internalApp.listen(internalSocketPath);
|
||||
|
||||
let internalServerClosed = false;
|
||||
|
||||
|
|
@ -125,8 +126,8 @@ async function bootstrap(): Promise<void> {
|
|||
internalServerClosed = true;
|
||||
|
||||
internalServer.close(() => {
|
||||
if (fs.existsSync(sockerName)) {
|
||||
fs.unlinkSync(sockerName);
|
||||
if (fs.existsSync(internalSocketPath)) {
|
||||
fs.unlinkSync(internalSocketPath);
|
||||
}
|
||||
|
||||
logger.info('Shutting down...');
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
nodaemon=true
|
||||
user=root
|
||||
logfile=/var/log/supervisor/supervisord.log
|
||||
pidfile=/var/run/supervisord-%(ENV_SOCKETS_RNDSTR)s.pid
|
||||
pidfile=%(ENV_SUPERVISORD_PID_PATH)s
|
||||
childlogdir=/var/log/supervisor
|
||||
logfile_maxbytes=5MB
|
||||
logfile_backups=2
|
||||
|
|
@ -10,7 +10,7 @@ loglevel=info
|
|||
silent=true
|
||||
|
||||
[unix_http_server]
|
||||
file = /run/supervisord-%(ENV_SOCKETS_RNDSTR)s.sock
|
||||
file = %(ENV_SUPERVISORD_SOCKET_PATH)s
|
||||
username = %(ENV_SUPERVISORD_USER)s
|
||||
password = %(ENV_SUPERVISORD_PASSWORD)s
|
||||
|
||||
|
|
@ -18,7 +18,7 @@ password = %(ENV_SUPERVISORD_PASSWORD)s
|
|||
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
|
||||
|
||||
[program:xray]
|
||||
command=/usr/local/bin/rw-core -config http+unix:///run/remnawave-internal-%(ENV_SOCKETS_RNDSTR)s.sock/internal/get-config?token=%(ENV_INTERNAL_REST_TOKEN)s -format json
|
||||
command=/usr/local/bin/rw-core -config http+unix://%(ENV_INTERNAL_SOCKET_PATH)s/internal/get-config?token=%(ENV_INTERNAL_REST_TOKEN)s -format json
|
||||
autostart=false
|
||||
autorestart=false
|
||||
stderr_logfile=/var/log/supervisor/xray.err.log
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue