Erweitere README um Build-Anweisungen und füge Build-Skripte hinzu

This commit is contained in:
2025-08-21 13:41:35 +02:00
parent f015e845a9
commit 9540a800b0
5 changed files with 215 additions and 3 deletions

162
README.md
View File

@ -4,7 +4,7 @@ Ein moderner Wake-on-LAN Manager, entwickelt mit Go und einer schönen Web-Oberf
## Features ## Features
- **PC-Verwaltung**: Hinzufügen, Anzeigen und Löschen von PC-Einträgen - **PC-Verwaltung**: Hinzufügen, Anzeigen, Bearbeiten und Löschen von PC-Einträgen
- **Wake-on-LAN**: Ein-Klick-Aufwecken von Computern über MAC-Adressen - **Wake-on-LAN**: Ein-Klick-Aufwecken von Computern über MAC-Adressen
- **Moderne Web-Oberfläche**: Responsive Design mit Bootstrap und FontAwesome - **Moderne Web-Oberfläche**: Responsive Design mit Bootstrap und FontAwesome
- **SQLite-Datenbank**: Einfache lokale Datenspeicherung - **SQLite-Datenbank**: Einfache lokale Datenspeicherung
@ -19,7 +19,7 @@ Ein moderner Wake-on-LAN Manager, entwickelt mit Go und einer schönen Web-Oberf
1. **Repository klonen:** 1. **Repository klonen:**
```bash ```bash
git clone <repository-url> git clone https://gitea.medisoftware.org/Markus/medi-wol.git
cd medi-wol cd medi-wol
``` ```
@ -45,6 +45,11 @@ Ein moderner Wake-on-LAN Manager, entwickelt mit Go und einer schönen Web-Oberf
2. Geben Sie die MAC-Adresse im Format `XX:XX:XX:XX:XX:XX` ein 2. Geben Sie die MAC-Adresse im Format `XX:XX:XX:XX:XX:XX` ein
3. Klicken Sie auf "PC hinzufügen" 3. Klicken Sie auf "PC hinzufügen"
### PC bearbeiten
1. Klicken Sie auf den "Bearbeiten"-Button neben dem gewünschten PC
2. Ändern Sie Name und/oder MAC-Adresse
3. Klicken Sie auf "Speichern"
### PC aufwecken ### PC aufwecken
- Klicken Sie auf den "Aufwecken"-Button neben dem gewünschten PC - Klicken Sie auf den "Aufwecken"-Button neben dem gewünschten PC
- Das System sendet automatisch ein Wake-on-LAN Paket - Das System sendet automatisch ein Wake-on-LAN Paket
@ -53,6 +58,109 @@ Ein moderner Wake-on-LAN Manager, entwickelt mit Go und einer schönen Web-Oberf
- Klicken Sie auf den "Löschen"-Button neben dem gewünschten PC - Klicken Sie auf den "Löschen"-Button neben dem gewünschten PC
- Bestätigen Sie die Löschung - Bestätigen Sie die Löschung
## Build-Anweisungen
### Windows Build
#### Lokaler Build (Windows)
```bash
# Einfacher Build
go build -o medi-wol.exe cmd/server/main.go
# Build mit Optimierungen
go build -ldflags="-s -w" -o medi-wol.exe cmd/server/main.go
# Build für Release
go build -ldflags="-s -w -X main.version=1.0.0" -o medi-wol.exe cmd/server/main.go
```
#### Cross-Compilation von Windows für Linux
```bash
# Für Linux AMD64
set GOOS=linux
set GOARCH=amd64
go build -o medi-wol-linux-amd64 cmd/server/main.go
# Für Linux ARM64 (Raspberry Pi, etc.)
set GOOS=linux
set GOARCH=arm64
go build -o medi-wol-linux-arm64 cmd/server/main.go
# Zurücksetzen auf Windows
set GOOS=windows
set GOARCH=amd64
```
### Linux Build
#### Lokaler Build (Linux)
```bash
# Einfacher Build
go build -o medi-wol cmd/server/main.go
# Build mit Optimierungen
go build -ldflags="-s -w" -o medi-wol cmd/server/main.go
# Build für Release
go build -ldflags="-s -w -X main.version=1.0.0" -o medi-wol cmd/server/main.go
```
#### Cross-Compilation von Linux für Windows
```bash
# Für Windows AMD64
GOOS=windows GOARCH=amd64 go build -o medi-wol-windows-amd64.exe cmd/server/main.go
# Für Windows ARM64
GOOS=windows GOARCH=arm64 go build -o medi-wol-windows-arm64.exe cmd/server/main.go
```
### Build-Flags Erklärung
- `-ldflags="-s -w"`: Reduziert die Binary-Größe durch Entfernung von Debug-Informationen
- `-X main.version=1.0.0`: Setzt eine Version-Variable zur Laufzeit
- `-o filename`: Bestimmt den Ausgabedateinamen
### Build-Skripte
#### Windows Build-Skript (`build.bat`)
```batch
@echo off
echo Building Medi-WOL for multiple platforms...
echo Building for Windows AMD64...
go build -ldflags="-s -w" -o dist/medi-wol-windows-amd64.exe cmd/server/main.go
echo Building for Linux AMD64...
set GOOS=linux
set GOARCH=amd64
go build -ldflags="-s -w" -o dist/medi-wol-linux-amd64 cmd/server/main.go
echo Building for Linux ARM64...
set GOOS=linux
set GOARCH=arm64
go build -ldflags="-s -w" -o dist/medi-wol-linux-arm64 cmd/server/main.go
echo Build complete!
pause
```
#### Linux Build-Skript (`build.sh`)
```bash
#!/bin/bash
echo "Building Medi-WOL for multiple platforms..."
echo "Building for Linux AMD64..."
go build -ldflags="-s -w" -o dist/medi-wol-linux-amd64 cmd/server/main.go
echo "Building for Linux ARM64..."
GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o dist/medi-wol-linux-arm64 cmd/server/main.go
echo "Building for Windows AMD64..."
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o dist/medi-wol-windows-amd64.exe cmd/server/main.go
echo "Build complete!"
```
## Projektstruktur ## Projektstruktur
``` ```
@ -67,6 +175,8 @@ medi-wol/
│ ├── static/ # CSS, JavaScript │ ├── static/ # CSS, JavaScript
│ └── templates/ # HTML-Templates │ └── templates/ # HTML-Templates
├── go.mod # Go-Module ├── go.mod # Go-Module
├── build.bat # Windows Build-Skript
├── build.sh # Linux Build-Skript
└── README.md # Diese Datei └── README.md # Diese Datei
``` ```
@ -75,6 +185,7 @@ medi-wol/
- `GET /` - Hauptseite - `GET /` - Hauptseite
- `GET /api/pcs` - Alle PCs abrufen - `GET /api/pcs` - Alle PCs abrufen
- `POST /api/pcs` - Neuen PC erstellen - `POST /api/pcs` - Neuen PC erstellen
- `PUT /api/pcs/:id` - PC aktualisieren
- `DELETE /api/pcs/:id` - PC löschen - `DELETE /api/pcs/:id` - PC löschen
- `POST /api/pcs/:id/wake` - PC aufwecken - `POST /api/pcs/:id/wake` - PC aufwecken
@ -99,7 +210,11 @@ go run cmd/server/main.go
### Build für Produktion ### Build für Produktion
```bash ```bash
go build -o medi-wol cmd/server/main.go # Windows
go build -ldflags="-s -w" -o medi-wol.exe cmd/server/main.go
# Linux
go build -ldflags="-s -w" -o medi-wol cmd/server/main.go
``` ```
### Tests ausführen ### Tests ausführen
@ -107,6 +222,47 @@ go build -o medi-wol cmd/server/main.go
go test ./... go test ./...
``` ```
### Code-Qualität prüfen
```bash
# Code formatieren
go fmt ./...
# Linting (falls golint installiert ist)
golint ./...
# Vet prüfen
go vet ./...
```
## Deployment
### Windows Service
```bash
# Mit NSSM (Non-Sucking Service Manager)
nssm install Medi-WOL "C:\path\to\medi-wol.exe"
nssm set Medi-WOL AppDirectory "C:\path\to\medi-wol"
nssm start Medi-WOL
```
### Linux Systemd Service
```ini
# /etc/systemd/system/medi-wol.service
[Unit]
Description=Medi-WOL Wake-on-LAN Manager
After=network.target
[Service]
Type=simple
User=medi-wol
WorkingDirectory=/opt/medi-wol
ExecStart=/opt/medi-wol/medi-wol
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
```
## Lizenz ## Lizenz
Dieses Projekt ist für den internen Gebrauch bestimmt. Dieses Projekt ist für den internen Gebrauch bestimmt.

33
build.bat Normal file
View File

@ -0,0 +1,33 @@
@echo off
echo Building Medi-WOL for multiple platforms...
REM Erstelle dist-Verzeichnis
if not exist dist mkdir dist
echo Building for Windows AMD64...
go build -ldflags="-s -w" -o dist/medi-wol-windows-amd64.exe cmd/server/main.go
echo Building for Linux AMD64...
set GOOS=linux
set GOARCH=amd64
go build -ldflags="-s -w" -o dist/medi-wol-linux-amd64 cmd/server/main.go
echo Building for Linux ARM64...
set GOOS=linux
set GOARCH=arm64
go build -ldflags="-s -w" -o dist/medi-wol-linux-arm64 cmd/server/main.go
echo Building for Windows ARM64...
set GOOS=windows
set GOARCH=arm64
go build -ldflags="-s -w" -o dist/medi-wol-windows-arm64.exe cmd/server/main.go
REM Zurücksetzen auf Windows AMD64
set GOOS=windows
set GOARCH=amd64
echo.
echo Build complete! Binaries created in dist/ folder:
dir dist
echo.
pause

23
build.sh Normal file
View File

@ -0,0 +1,23 @@
#!/bin/bash
echo "Building Medi-WOL for multiple platforms..."
# Erstelle dist-Verzeichnis
mkdir -p dist
echo "Building for Linux AMD64..."
go build -ldflags="-s -w" -o dist/medi-wol-linux-amd64 cmd/server/main.go
echo "Building for Linux ARM64..."
GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" -o dist/medi-wol-linux-arm64 cmd/server/main.go
echo "Building for Windows AMD64..."
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o dist/medi-wol-windows-amd64.exe cmd/server/main.go
echo "Building for Windows ARM64..."
GOOS=windows GOARCH=arm64 go build -ldflags="-s -w" -o dist/medi-wol-windows-arm64.exe cmd/server/main.go
echo ""
echo "Build complete! Binaries created in dist/ folder:"
ls -la dist/
echo ""

BIN
dist/medi-wol-linux-amd64 vendored Normal file

Binary file not shown.

BIN
dist/medi-wol-linux-arm64 vendored Normal file

Binary file not shown.