Add SQL query patterns documentation and Linux package build scripts

- Created `TV_SHOWS_SQL_QUERY_PATTERNS.md` to document SQL query patterns for TV shows, including performance issues and missing indexes.
- Added `README.md` for Linux package building, detailing steps for creating Debian and Red Hat packages.
- Implemented build scripts for Debian and Red Hat, including service files and post-installation hooks.
- Added necessary scripts for managing Jellyfin service lifecycle on both Debian and Red Hat systems.
- Included package specifications and installation instructions for both distributions.
This commit is contained in:
2026-07-14 10:32:56 -04:00
parent e51d3577ce
commit 8914f4dce9
29 changed files with 4123 additions and 31 deletions
+31
View File
@@ -0,0 +1,31 @@
[Unit]
Description=Jellyfin Media Server
After=network.target
[Service]
Type=simple
User=jellyfin
Group=jellyfin
WorkingDirectory=/var/lib/jellyfin
# Run jellyfin with proper configuration directories
ExecStart=/opt/jellyfin/jellyfin \
--datadir=/var/lib/jellyfin \
--logdir=/var/log/jellyfin \
--cachedir=/var/cache/jellyfin
# Restart behavior
Restart=on-failure
RestartSec=5s
# Resource limits
LimitNOFILE=65536
MemoryMax=4G
# Logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=jellyfin
[Install]
WantedBy=multi-user.target
+83
View File
@@ -0,0 +1,83 @@
#!/bin/bash
# Jellyfin postinst script - runs after package installation
set -e
# Create jellyfin user if it doesn't exist
if ! getent passwd jellyfin > /dev/null; then
useradd --system \
--home /var/lib/jellyfin \
--shell /bin/false \
--comment "Jellyfin Media Server" \
jellyfin
fi
# Create necessary directories
mkdir -p /var/lib/jellyfin
mkdir -p /var/log/jellyfin
mkdir -p /var/cache/jellyfin
mkdir -p /etc/jellyfin
# Set proper ownership and permissions
chown -R jellyfin:jellyfin /var/lib/jellyfin
chown -R jellyfin:jellyfin /var/log/jellyfin
chown -R jellyfin:jellyfin /var/cache/jellyfin
chown -R jellyfin:jellyfin /etc/jellyfin
chmod 755 /var/lib/jellyfin
chmod 755 /var/log/jellyfin
chmod 755 /var/cache/jellyfin
chmod 755 /etc/jellyfin
# Set permissions on the application directory
chown -R jellyfin:jellyfin /opt/jellyfin
chmod -R 755 /opt/jellyfin
# Create systemd service file if it doesn't exist
if [[ ! -f /etc/systemd/system/jellyfin.service ]]; then
cat > /etc/systemd/system/jellyfin.service << 'EOF'
[Unit]
Description=Jellyfin Media Server
After=network.target
[Service]
Type=simple
User=jellyfin
Group=jellyfin
WorkingDirectory=/var/lib/jellyfin
ExecStart=/opt/jellyfin/jellyfin --webdir=/opt/jellyfin/wwwroot --logdir=/var/log/jellyfin --datadir=/var/lib/jellyfin --cachedir=/var/cache/jellyfin
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
[Install]
WantedBy=multi-user.target
EOF
fi
# Reload systemd daemon
systemctl daemon-reload
# Enable and start the service
if [[ -f /etc/systemd/system/jellyfin.service ]]; then
systemctl enable jellyfin.service
systemctl restart jellyfin.service || true
fi
# Display post-installation message
echo ""
echo "=========================================="
echo "Jellyfin Media Server installed!"
echo "=========================================="
echo ""
echo "Service status: systemctl status jellyfin"
echo "View logs: journalctl -u jellyfin -f"
echo "Configuration: /etc/jellyfin/"
echo "Data: /var/lib/jellyfin/"
echo "Logs: /var/log/jellyfin/"
echo ""
echo "Access Jellyfin at: http://localhost:8096"
echo ""
exit 0
+34
View File
@@ -0,0 +1,34 @@
#!/bin/bash
set -e
# Jellyfin Post-Installation Script (Debian)
# Runs after package is installed
# Create jellyfin user/group if not exists
if ! id "jellyfin" &>/dev/null; then
echo "Creating jellyfin user and group..."
useradd -r -s /bin/false -d /var/lib/jellyfin jellyfin
fi
# Create necessary directories
mkdir -p /var/lib/jellyfin
mkdir -p /var/log/jellyfin
mkdir -p /etc/jellyfin
# Set ownership and permissions
chown -R jellyfin:jellyfin /opt/jellyfin
chown -R jellyfin:jellyfin /var/lib/jellyfin
chown -R jellyfin:jellyfin /var/log/jellyfin
chmod 755 /opt/jellyfin
chmod 750 /var/lib/jellyfin
chmod 750 /var/log/jellyfin
# Enable and start service if systemd is available
if command -v systemctl &> /dev/null; then
systemctl daemon-reload || true
systemctl enable jellyfin.service || true
echo "To start Jellyfin, run: sudo systemctl start jellyfin"
fi
echo "Jellyfin post-install complete!"
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
# Jellyfin postrm script - runs after package removal
set -e
# Remove systemd service file
if [[ -f /etc/systemd/system/jellyfin.service ]]; then
rm -f /etc/systemd/system/jellyfin.service
systemctl daemon-reload
fi
# Optional: Uncomment the lines below to completely remove user and data on uninstall
# WARNING: This will delete all Jellyfin data, libraries, and settings!
# Remove jellyfin user
# userdel jellyfin || true
# Remove data directories
# rm -rf /var/lib/jellyfin
# rm -rf /var/log/jellyfin
# rm -rf /var/cache/jellyfin
# rm -rf /etc/jellyfin
echo "Jellyfin Media Server uninstalled."
echo "Note: User data in /var/lib/jellyfin has been preserved."
echo "To completely remove all data, run:"
echo " sudo rm -rf /var/lib/jellyfin /var/log/jellyfin /var/cache/jellyfin /etc/jellyfin"
exit 0
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# Jellyfin Post-Removal Script (Debian)
# Runs after package is removed
# Remove jellyfin user/group
if id "jellyfin" &>/dev/null; then
echo "Removing jellyfin user and group..."
userdel jellyfin || true
fi
echo "Jellyfin has been removed."
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# Jellyfin prerm script - runs before package removal
set -e
# Stop the service
if [[ -f /etc/systemd/system/jellyfin.service ]]; then
systemctl stop jellyfin.service || true
systemctl disable jellyfin.service || true
fi
exit 0
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
set -e
# Jellyfin Pre-Removal Script (Debian)
# Runs before package is removed
# Stop service
if command -v systemctl &> /dev/null; then
echo "Stopping Jellyfin service..."
systemctl stop jellyfin.service || true
systemctl disable jellyfin.service || true
fi