Skip to content

Commit 45f4db2

Browse files
use and env file for env vars
1 parent 6487f9b commit 45f4db2

File tree

1 file changed

+45
-12
lines changed

1 file changed

+45
-12
lines changed

pkg/relay/service.go

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"github.com/pterm/pterm"
99
)
1010

11-
1211
// Template for the systemd service file
1312
const serviceTemplate = `[Unit]
1413
Description=Nostr Relay Pyramid
@@ -18,19 +17,27 @@ After=network.target
1817
Type=simple
1918
User=nostr
2019
WorkingDirectory=/home/nostr
21-
Environment="DOMAIN={{.Domain}}"
22-
Environment="RELAY_NAME=nostr-relay-pyramid"
23-
Environment="RELAY_PUBKEY={{.PubKey}}"
20+
EnvironmentFile=/etc/systemd/system/nostr-relay-pyramid.env
2421
ExecStart=/usr/local/bin/nostr-relay-pyramid
2522
Restart=on-failure
2623
2724
[Install]
2825
WantedBy=multi-user.target
2926
`
3027

28+
// Template for the environment file
29+
const envTemplate = `
30+
DOMAIN={{.Domain}}
31+
RELAY_NAME=nostr-relay-pyramid
32+
RELAY_PUBKEY={{.PubKey}}
33+
`
34+
3135
// Path for the systemd service file
3236
const serviceFilePath = "/etc/systemd/system/nostr-relay-pyramid.service"
3337

38+
// Path for the environment file
39+
const envFilePath = "/etc/systemd/system/nostr-relay-pyramid.env"
40+
3441
// Function to check if a user exists
3542
func userExists(username string) bool {
3643
cmd := exec.Command("id", "-u", username)
@@ -40,8 +47,8 @@ func userExists(username string) bool {
4047

4148
// Function to set up the relay service
4249
func SetupRelayService(domain, pubKey string) {
43-
4450
spinner, _ := pterm.DefaultSpinner.Start("Configuring nginx for HTTP...")
51+
4552
// Check if the service file exists and remove it if it does
4653
if _, err := os.Stat(serviceFilePath); err == nil {
4754
err = os.Remove(serviceFilePath)
@@ -50,20 +57,28 @@ func SetupRelayService(domain, pubKey string) {
5057
}
5158
}
5259

60+
// Check if the environment file exists and remove it if it does
61+
if _, err := os.Stat(envFilePath); err == nil {
62+
err = os.Remove(envFilePath)
63+
if err != nil {
64+
log.Fatalf("Error removing environment file: %v", err)
65+
}
66+
}
67+
5368
// Ensure the user for the relay service exists
5469
if !userExists("nostr") {
55-
spinner.UpdateText("Creating user 'nostr'...")
70+
spinner.UpdateText("Creating user 'nostr'...")
5671
err := exec.Command("adduser", "--disabled-login", "--gecos", "", "nostr").Run()
5772
if err != nil {
5873
log.Fatalf("Error creating user: %v", err)
5974
}
6075
} else {
61-
spinner.UpdateText("User 'nostr' already exists")
76+
spinner.UpdateText("User 'nostr' already exists")
6277
}
6378

6479
// Ensure the data directory exists and set ownership
6580
const dataDir = "/var/lib/nostr-relay-pyramid"
66-
spinner.UpdateText("Creating data directory...")
81+
spinner.UpdateText("Creating data directory...")
6782
err := os.MkdirAll(dataDir, 0755)
6883
if err != nil {
6984
log.Fatalf("Error creating data directory: %v", err)
@@ -74,8 +89,26 @@ func SetupRelayService(domain, pubKey string) {
7489
log.Fatalf("Error setting ownership of the data directory: %v", err)
7590
}
7691

92+
// Create the environment file
93+
spinner.UpdateText("Creating environment file...")
94+
envFile, err := os.Create(envFilePath)
95+
if err != nil {
96+
log.Fatalf("Error creating environment file: %v", err)
97+
}
98+
defer envFile.Close()
99+
100+
envTmpl, err := template.New("env").Parse(envTemplate)
101+
if err != nil {
102+
log.Fatalf("Error parsing environment template: %v", err)
103+
}
104+
105+
err = envTmpl.Execute(envFile, struct{ Domain, PubKey string }{Domain: domain, PubKey: pubKey})
106+
if err != nil {
107+
log.Fatalf("Error executing environment template: %v", err)
108+
}
109+
77110
// Create the systemd service file
78-
spinner.UpdateText("Creating service file...")
111+
spinner.UpdateText("Creating service file...")
79112
serviceFile, err := os.Create(serviceFilePath)
80113
if err != nil {
81114
log.Fatalf("Error creating service file: %v", err)
@@ -93,14 +126,14 @@ func SetupRelayService(domain, pubKey string) {
93126
}
94127

95128
// Reload systemd to apply the new service
96-
spinner.UpdateText("Reloading systemd daemon...")
129+
spinner.UpdateText("Reloading systemd daemon...")
97130
err = exec.Command("systemctl", "daemon-reload").Run()
98131
if err != nil {
99132
log.Fatalf("Error reloading systemd daemon: %v", err)
100133
}
101134

102135
// Enable and start the nostr relay service
103-
spinner.UpdateText("Enabling and starting service...")
136+
spinner.UpdateText("Enabling and starting service...")
104137
err = exec.Command("systemctl", "enable", "nostr-relay-pyramid").Run()
105138
if err != nil {
106139
log.Fatalf("Error enabling nostr relay service: %v", err)
@@ -111,6 +144,6 @@ func SetupRelayService(domain, pubKey string) {
111144
log.Fatalf("Error starting nostr relay service: %v", err)
112145
}
113146

114-
spinner.Success("Nostr relay service configured")
147+
spinner.Success("Nostr relay service configured")
115148
}
116149

0 commit comments

Comments
 (0)