Introduced new and updated documentation files across the docs/ directory, including project structure guides, function library references, and standardized READMEs for ct, install, vm, tools, api, and misc. This update fully documents all nine function libraries, provides quick start and learning paths, and mirrors the project structure for easier navigation and contribution.
274 lines
8.5 KiB
Markdown
274 lines
8.5 KiB
Markdown
# alpine-install.func Documentation
|
|
|
|
## Overview
|
|
|
|
The `alpine-install.func` file provides Alpine Linux-specific installation and configuration functions for LXC containers. It complements the standard `install.func` with Alpine-specific operations using the apk package manager instead of apt.
|
|
|
|
## Purpose and Use Cases
|
|
|
|
- **Alpine Container Setup**: Initialize Alpine Linux containers with proper configuration
|
|
- **IPv6 Management**: Enable or disable IPv6 in Alpine with persistent configuration
|
|
- **Network Verification**: Verify connectivity in Alpine environments
|
|
- **SSH Configuration**: Setup SSH daemon on Alpine
|
|
- **Auto-Login Setup**: Configure passwordless root login for Alpine containers
|
|
- **Package Management**: Safe apk operations with error handling
|
|
|
|
## Quick Reference
|
|
|
|
### Key Function Groups
|
|
- **Initialization**: `setting_up_container()` - Alpine setup message
|
|
- **Network**: `verb_ip6()`, `network_check()` - IPv6 and connectivity
|
|
- **OS Configuration**: `update_os()` - Alpine package updates
|
|
- **SSH/MOTD**: `motd_ssh()` - SSH and login message setup
|
|
- **Container Customization**: `customize()`, `cleanup_lxc()` - Final setup
|
|
|
|
### Dependencies
|
|
- **External**: `apk`, `curl`, `wget`, `ping`
|
|
- **Internal**: Uses functions from `core.func`, `error_handler.func`
|
|
|
|
### Integration Points
|
|
- Used by: Alpine-based install scripts (alpine.sh, alpine-ntfy.sh, etc.)
|
|
- Uses: Environment variables from build.func
|
|
- Provides: Alpine-specific installation and management services
|
|
|
|
## Documentation Files
|
|
|
|
### 📊 [ALPINE_INSTALL_FUNC_FLOWCHART.md](./ALPINE_INSTALL_FUNC_FLOWCHART.md)
|
|
Visual execution flows showing Alpine container initialization and setup workflows.
|
|
|
|
### 📚 [ALPINE_INSTALL_FUNC_FUNCTIONS_REFERENCE.md](./ALPINE_INSTALL_FUNC_FUNCTIONS_REFERENCE.md)
|
|
Complete alphabetical reference of all functions with parameters and usage details.
|
|
|
|
### 💡 [ALPINE_INSTALL_FUNC_USAGE_EXAMPLES.md](./ALPINE_INSTALL_FUNC_USAGE_EXAMPLES.md)
|
|
Practical examples showing how to use Alpine installation functions.
|
|
|
|
### 🔗 [ALPINE_INSTALL_FUNC_INTEGRATION.md](./ALPINE_INSTALL_FUNC_INTEGRATION.md)
|
|
How alpine-install.func integrates with standard install workflows.
|
|
|
|
## Key Features
|
|
|
|
### Alpine-Specific Functions
|
|
- **apk Package Manager**: Alpine package operations (instead of apt-get)
|
|
- **OpenRC Support**: Alpine uses OpenRC init instead of systemd
|
|
- **Lightweight Setup**: Minimal dependencies appropriate for Alpine
|
|
- **IPv6 Configuration**: Persistent IPv6 settings via `/etc/network/interfaces`
|
|
|
|
### Network & Connectivity
|
|
- **IPv6 Toggle**: Enable/disable with persistent configuration
|
|
- **Connectivity Check**: Verify internet access in Alpine
|
|
- **DNS Verification**: Resolve domain names correctly
|
|
- **Retry Logic**: Automatic recovery from transient failures
|
|
|
|
### SSH & Auto-Login
|
|
- **SSH Daemon**: Setup and start sshd on Alpine
|
|
- **Root Keys**: Configure root SSH access
|
|
- **Auto-Login**: Optional automatic login without password
|
|
- **MOTD**: Custom login message on Alpine
|
|
|
|
## Function Categories
|
|
|
|
### 🔹 Core Functions
|
|
- `setting_up_container()` - Alpine container setup message
|
|
- `update_os()` - Update Alpine packages via apk
|
|
- `verb_ip6()` - Enable/disable IPv6 persistently
|
|
- `network_check()` - Verify network connectivity
|
|
|
|
### 🔹 SSH & Configuration Functions
|
|
- `motd_ssh()` - Configure SSH daemon on Alpine
|
|
- `customize()` - Apply Alpine-specific customizations
|
|
- `cleanup_lxc()` - Final cleanup
|
|
|
|
### 🔹 Service Management (OpenRC)
|
|
- `rc-update` - Enable/disable services for Alpine
|
|
- `rc-service` - Start/stop services on Alpine
|
|
- Service configuration files in `/etc/init.d/`
|
|
|
|
## Differences from Debian Install
|
|
|
|
| Feature | Debian (install.func) | Alpine (alpine-install.func) |
|
|
|---------|:---:|:---:|
|
|
| Package Manager | apt-get | apk |
|
|
| Init System | systemd | OpenRC |
|
|
| SSH Service | systemctl | rc-service |
|
|
| Config Files | /etc/systemd/ | /etc/init.d/ |
|
|
| Network Config | /etc/network/ or Netplan | /etc/network/interfaces |
|
|
| IPv6 Setup | netplan files | /etc/network/interfaces |
|
|
| Auto-Login | getty override | `/etc/inittab` or shell config |
|
|
| Size | ~200MB | ~100MB |
|
|
|
|
## Execution Flow for Alpine
|
|
|
|
```
|
|
Alpine Container Started
|
|
↓
|
|
source $FUNCTIONS_FILE_PATH
|
|
↓
|
|
setting_up_container() ← Alpine setup message
|
|
↓
|
|
update_os() ← apk update
|
|
↓
|
|
verb_ip6() ← IPv6 configuration (optional)
|
|
↓
|
|
network_check() ← Verify connectivity
|
|
↓
|
|
[Application-Specific Installation]
|
|
↓
|
|
motd_ssh() ← Configure SSH/MOTD
|
|
customize() ← Apply customizations
|
|
↓
|
|
cleanup_lxc() ← Final cleanup
|
|
↓
|
|
Alpine Installation Complete
|
|
```
|
|
|
|
## Common Usage Patterns
|
|
|
|
### Basic Alpine Setup
|
|
```bash
|
|
#!/usr/bin/env bash
|
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
setting_up_container
|
|
update_os
|
|
|
|
# Install Alpine-specific packages
|
|
apk add --no-cache curl wget git
|
|
|
|
# ... application installation ...
|
|
|
|
motd_ssh
|
|
customize
|
|
cleanup_lxc
|
|
```
|
|
|
|
### With IPv6 Enabled
|
|
```bash
|
|
#!/usr/bin/env bash
|
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
setting_up_container
|
|
verb_ip6
|
|
update_os
|
|
network_check
|
|
|
|
# ... application installation ...
|
|
|
|
motd_ssh
|
|
customize
|
|
cleanup_lxc
|
|
```
|
|
|
|
### Installing Services
|
|
```bash
|
|
#!/usr/bin/env bash
|
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
setting_up_container
|
|
update_os
|
|
|
|
# Install via apk
|
|
apk add --no-cache nginx
|
|
|
|
# Enable and start service on Alpine
|
|
rc-update add nginx
|
|
rc-service nginx start
|
|
|
|
motd_ssh
|
|
customize
|
|
cleanup_lxc
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
### ✅ DO
|
|
- Use `apk add --no-cache` to reduce image size
|
|
- Enable IPv6 if application needs it (`verb_ip6`)
|
|
- Use `rc-service` for service management on Alpine
|
|
- Check `/etc/network/interfaces` for IPv6 persistence
|
|
- Test network connectivity before critical operations
|
|
- Use `$STD` for output suppression in production
|
|
|
|
### ❌ DON'T
|
|
- Use `apt-get` commands (Alpine doesn't have apt)
|
|
- Use `systemctl` (Alpine uses OpenRC, not systemd)
|
|
- Use `service` command (it may not exist on Alpine)
|
|
- Assume systemd exists on Alpine
|
|
- Forget to add `--no-cache` flag to `apk add`
|
|
- Hardcode paths from Debian (different on Alpine)
|
|
|
|
## Alpine-Specific Considerations
|
|
|
|
### Package Names
|
|
Some packages have different names on Alpine:
|
|
```bash
|
|
# Debian → Alpine
|
|
# curl → curl (same)
|
|
# wget → wget (same)
|
|
# python3 → python3 (same)
|
|
# libpq5 → postgresql-client
|
|
# libmariadb3 → mariadb-client
|
|
```
|
|
|
|
### Service Management
|
|
```bash
|
|
# Debian (systemd) → Alpine (OpenRC)
|
|
systemctl start nginx → rc-service nginx start
|
|
systemctl enable nginx → rc-update add nginx
|
|
systemctl status nginx → rc-service nginx status
|
|
```
|
|
|
|
### Network Configuration
|
|
```bash
|
|
# Debian (Netplan) → Alpine (/etc/network/interfaces)
|
|
/etc/netplan/01-*.yaml → /etc/network/interfaces
|
|
netplan apply → Configure directly in interfaces
|
|
|
|
# Enable IPv6 persistently on Alpine:
|
|
# Add to /etc/network/interfaces:
|
|
# iface eth0 inet6 static
|
|
# address <IPv6_ADDRESS>
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### "apk command not found"
|
|
- This is Alpine Linux, not Debian
|
|
- Install packages with `apk add` instead of `apt-get install`
|
|
- Example: `apk add --no-cache curl wget`
|
|
|
|
### "IPv6 not persisting after reboot"
|
|
- IPv6 must be configured in `/etc/network/interfaces`
|
|
- The `verb_ip6()` function handles this automatically
|
|
- Verify: `cat /etc/network/interfaces`
|
|
|
|
### "Service won't start on Alpine"
|
|
- Alpine uses OpenRC, not systemd
|
|
- Use `rc-service nginx start` instead of `systemctl start nginx`
|
|
- Enable service: `rc-update add nginx`
|
|
- Check logs: `/var/log/` or `rc-service nginx status`
|
|
|
|
### "Container too large"
|
|
- Alpine should be much smaller than Debian
|
|
- Verify using `apk add --no-cache` (removes package cache)
|
|
- Example: `apk add --no-cache nginx` (not `apk add nginx`)
|
|
|
|
## Related Documentation
|
|
|
|
- **[alpine-tools.func/](../alpine-tools.func/)** - Alpine tool installation
|
|
- **[install.func/](../install.func/)** - Standard installation functions
|
|
- **[core.func/](../core.func/)** - Utility functions
|
|
- **[error_handler.func/](../error_handler.func/)** - Error handling
|
|
- **[UPDATED_APP-install.md](../../UPDATED_APP-install.md)** - Application script guide
|
|
|
|
## Recent Updates
|
|
|
|
### Version 2.0 (Dec 2025)
|
|
- ✅ Enhanced IPv6 persistence configuration
|
|
- ✅ Improved OpenRC service management
|
|
- ✅ Better apk error handling
|
|
- ✅ Added Alpine-specific best practices documentation
|
|
- ✅ Streamlined SSH setup for Alpine
|
|
|
|
---
|
|
|
|
**Last Updated**: December 2025
|
|
**Maintainers**: community-scripts team
|
|
**License**: MIT
|