297 lines
8.8 KiB
Markdown
297 lines
8.8 KiB
Markdown
# Wiki Host - MediaWiki
|
|
|
|
MediaWiki instance at 141.56.51.13 running in an LXC container.
|
|
|
|
## Overview
|
|
|
|
- **Hostname**: wiki
|
|
- **FQDN**: wiki.htw.stura-dresden.de
|
|
- **IP Address**: 141.56.51.13
|
|
- **Type**: Proxmox LXC Container
|
|
- **Services**: MediaWiki, MariaDB, Apache httpd, PHP-FPM
|
|
|
|
## Services
|
|
|
|
### MediaWiki
|
|
|
|
The StuRa HTW Dresden wiki runs MediaWiki with extensive customization:
|
|
- **Name**: Wiki StuRa HTW Dresden
|
|
- **Language**: German (de)
|
|
- **Default skin**: Vector (classic)
|
|
- **Session timeout**: 3 hours (10800 seconds)
|
|
- **ImageMagick**: Enabled for image processing
|
|
- **Instant Commons**: Enabled (access to Wikimedia Commons images)
|
|
|
|
### Custom Namespaces
|
|
|
|
The wiki defines several custom namespaces for organizational purposes:
|
|
|
|
| Namespace | ID | Purpose |
|
|
|-----------|-----|---------|
|
|
| StuRa | 100 | Standard StuRa content |
|
|
| Intern | 102 | Internal (non-public) StuRa content |
|
|
| Admin | 104 | Administrative wiki content |
|
|
| Person | 106 | Individual person pages (non-public) |
|
|
| Faranto | 108 | Faranto e.V. content |
|
|
| ET | 212 | ET Fachschaft content |
|
|
| ET_intern | 412 | ET internal content |
|
|
| LaUCh | 216 | LaUCh Fachschaft content |
|
|
| LaUCh_intern | 416 | LaUCh internal content |
|
|
|
|
Each namespace has a corresponding discussion namespace (odd numbered ID).
|
|
|
|
### User Groups and Permissions
|
|
|
|
**Custom user groups:**
|
|
- **intern**: Access to Intern and Person namespaces
|
|
- **ET**: Access to ET_intern namespace
|
|
- **LUC**: Access to LaUCh_intern namespace
|
|
|
|
These groups have the same base permissions as standard users (move pages, edit, upload, etc.) plus access to their respective restricted namespaces.
|
|
|
|
### Spam Prevention
|
|
|
|
**QuestyCaptcha** is configured to prevent automated spam:
|
|
- Challenges users with questions about HTW and StuRa
|
|
- Triggered on: edit, create, createtalk, addurl, createaccount, badlogin
|
|
- Questions are specific to local knowledge (e.g., "Welche Anzahl an Referaten hat unser StuRa geschaffen?")
|
|
|
|
### Extensions
|
|
|
|
The following extensions are installed:
|
|
|
|
- **Lockdown**: Restricts namespace access by user group
|
|
- **ContributionScores**: Statistics of contributions by user
|
|
- **UserMerge**: Merge and delete user accounts (for spam cleanup)
|
|
- **Interwiki**: Use interwiki links (e.g., Wikipedia references)
|
|
- **Cite**: Reference system (footnotes)
|
|
- **ConfirmEdit/QuestyCaptcha**: CAPTCHA challenges
|
|
|
|
## Deployment
|
|
|
|
See the [main README](../../README.md) for deployment methods.
|
|
|
|
### Initial Installation
|
|
|
|
**Using nixos-anywhere:**
|
|
```bash
|
|
nix run github:nix-community/nixos-anywhere -- --flake .#wiki --target-host root@141.56.51.13
|
|
```
|
|
|
|
**Using container tarball:**
|
|
```bash
|
|
nix build .#containers-wiki
|
|
scp result/tarball/nixos-system-x86_64-linux.tar.xz root@proxmox-host:/var/lib/vz/template/cache/
|
|
pct create 113 /var/lib/vz/template/cache/nixos-system-x86_64-linux.tar.xz \
|
|
--hostname wiki \
|
|
--net0 name=eth0,bridge=vmbr0,ip=141.56.51.13/24,gw=141.56.51.254 \
|
|
--memory 2048 \
|
|
--cores 2 \
|
|
--rootfs local-lvm:10 \
|
|
--unprivileged 1 \
|
|
--features nesting=1
|
|
pct start 113
|
|
```
|
|
|
|
### Updates
|
|
|
|
```bash
|
|
# From local machine
|
|
nixos-rebuild switch --flake .#wiki --target-host root@141.56.51.13
|
|
|
|
# Or use auto-generated script
|
|
nix run .#wiki-update
|
|
```
|
|
|
|
## Post-Deployment Steps
|
|
|
|
After deploying for the first time:
|
|
|
|
1. **Set admin password:**
|
|
```bash
|
|
echo "your-secure-password" > /var/lib/mediawiki/mediawiki-password
|
|
chmod 600 /var/lib/mediawiki/mediawiki-password
|
|
```
|
|
|
|
2. **Set database password:**
|
|
```bash
|
|
echo "your-db-password" > /var/lib/mediawiki/mediawiki-dbpassword
|
|
chmod 600 /var/lib/mediawiki/mediawiki-dbpassword
|
|
```
|
|
|
|
3. **Access the web interface:**
|
|
```
|
|
https://wiki.htw.stura-dresden.de
|
|
```
|
|
|
|
4. **Complete initial setup:**
|
|
- Log in with admin credentials
|
|
- Configure additional settings via Special:Version
|
|
- Set up main page
|
|
|
|
5. **Configure namespace permissions:**
|
|
- Add users to `intern`, `ET`, or `LUC` groups via Special:UserRights
|
|
- Verify namespace restrictions work correctly
|
|
- Test that non-members cannot access restricted namespaces
|
|
|
|
6. **Add users to appropriate groups:**
|
|
- Navigate to Special:UserRights
|
|
- Select user
|
|
- Add to: intern, ET, LUC, sysop, bureaucrat (as needed)
|
|
|
|
7. **Upload logo and favicon** (optional):
|
|
- Place files in `/var/lib/mediawiki/images/`
|
|
- Files: `logo.png`, `logo.svg`, `favicon.png`
|
|
|
|
## Integration with Proxy
|
|
|
|
The central proxy at 141.56.51.1 handles:
|
|
- **SNI routing**: Routes HTTPS traffic for wiki.htw.stura-dresden.de
|
|
- **HTTP routing**: Routes HTTP traffic and redirects to HTTPS
|
|
- **ACME challenges**: Forwards certificate verification requests
|
|
|
|
This host manages its own ACME certificates. Apache httpd handles TLS termination.
|
|
|
|
## Troubleshooting
|
|
|
|
### Locale warnings
|
|
|
|
When accessing the container with `pct enter`, you may see:
|
|
```
|
|
sh: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory
|
|
sh: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory
|
|
```
|
|
|
|
**This is a known issue and can be safely ignored.** It only affects the interactive shell environment, not the running services. Regular SSH access provides a proper shell with correct locale settings.
|
|
|
|
### Database connection issues
|
|
|
|
If MediaWiki cannot connect to the database:
|
|
|
|
```bash
|
|
# Check MariaDB status
|
|
systemctl status mysql
|
|
|
|
# Check database exists
|
|
mysql -u root -e "SHOW DATABASES;"
|
|
|
|
# Check user permissions
|
|
mysql -u root -e "SHOW GRANTS FOR 'mediawiki'@'localhost';"
|
|
|
|
# View MediaWiki logs
|
|
journalctl -u mediawiki -f
|
|
```
|
|
|
|
**Solution**: Ensure the database password in `/var/lib/mediawiki/mediawiki-dbpassword` matches the database user password.
|
|
|
|
### Extension loading problems
|
|
|
|
If extensions are not working:
|
|
|
|
```bash
|
|
# Check extension files exist
|
|
ls -l /nix/store/*-mediawiki-extensions/
|
|
|
|
# View PHP errors
|
|
tail -f /var/log/httpd/error_log
|
|
|
|
# Test MediaWiki configuration
|
|
php /var/lib/mediawiki/maintenance/checkSetup.php
|
|
```
|
|
|
|
**Solution**: Verify extensions are properly defined in the configuration and compatible with the MediaWiki version.
|
|
|
|
### ImageMagick configuration
|
|
|
|
If image uploads or thumbnails fail:
|
|
|
|
```bash
|
|
# Check ImageMagick installation
|
|
which convert
|
|
/run/current-system/sw/bin/convert --version
|
|
|
|
# Test image conversion
|
|
/run/current-system/sw/bin/convert input.png -resize 100x100 output.png
|
|
|
|
# Check MediaWiki image directory permissions
|
|
ls -ld /var/lib/mediawiki/images/
|
|
```
|
|
|
|
**Solution**: Ensure ImageMagick path is set correctly (`$wgImageMagickConvertCommand`) and the images directory is writable.
|
|
|
|
### Namespace permission issues
|
|
|
|
If users can access restricted namespaces:
|
|
|
|
```bash
|
|
# Check Lockdown extension is loaded
|
|
grep -i lockdown /var/lib/mediawiki/LocalSettings.php
|
|
|
|
# Verify user group membership
|
|
# Log in as admin and check Special:UserRights
|
|
|
|
# Check namespace permission configuration
|
|
grep -A 5 "wgNamespacePermissionLockdown" /var/lib/mediawiki/LocalSettings.php
|
|
```
|
|
|
|
**Solution**: Verify the Lockdown extension is installed and `$wgNamespacePermissionLockdown` is configured correctly for each restricted namespace.
|
|
|
|
### ACME certificate issues
|
|
|
|
If HTTPS is not working:
|
|
|
|
```bash
|
|
# Check ACME certificate status
|
|
systemctl status acme-wiki.htw.stura-dresden.de
|
|
|
|
# View ACME logs
|
|
journalctl -u acme-wiki.htw.stura-dresden.de -f
|
|
|
|
# Check Apache HTTPS configuration
|
|
httpd -t -D DUMP_VHOSTS
|
|
```
|
|
|
|
**Solution**: Ensure DNS points to proxy (141.56.51.1) and the proxy forwards ACME challenges to this host.
|
|
|
|
## Files and Directories
|
|
|
|
- **MediaWiki data**: `/var/lib/mediawiki/`
|
|
- **Password file**: `/var/lib/mediawiki/mediawiki-password`
|
|
- **DB password file**: `/var/lib/mediawiki/mediawiki-dbpassword`
|
|
- **Images**: `/var/lib/mediawiki/images/`
|
|
- **LocalSettings**: `/var/lib/mediawiki/LocalSettings.php` (generated)
|
|
- **Extensions**: `/nix/store/.../mediawiki-extensions/`
|
|
- **Database**: MariaDB stores data in `/var/lib/mysql/`
|
|
|
|
## Network
|
|
|
|
- **Interface**: eth0 (LXC container)
|
|
- **IP**: 141.56.51.13/24
|
|
- **Gateway**: 141.56.51.254
|
|
- **Firewall**: Ports 80, 443 allowed
|
|
|
|
## Configuration Details
|
|
|
|
- **Time zone**: Europe/Berlin
|
|
- **Table prefix**: sturawiki
|
|
- **Emergency contact**: wiki@stura.htw-dresden.de
|
|
- **Password sender**: wiki@stura.htw-dresden.de
|
|
- **External images**: Allowed
|
|
- **File uploads**: Enabled
|
|
- **Email notifications**: Enabled (user talk, watchlist)
|
|
|
|
## Automatic Maintenance
|
|
|
|
- **Auto-upgrade**: Enabled (system automatically updates)
|
|
- **Auto-reboot**: Allowed (system may reboot for updates)
|
|
- **Store optimization**: Automatic
|
|
- **Garbage collection**: Automatic
|
|
|
|
## See Also
|
|
|
|
- [Main README](../../README.md) - Deployment methods and architecture
|
|
- [Proxy README](../proxy/README.md) - How the central proxy routes traffic
|
|
- [MediaWiki Documentation](https://www.mediawiki.org/wiki/Documentation)
|
|
- [NixOS MediaWiki Options](https://search.nixos.org/options?query=services.mediawiki)
|
|
- [Extension:Lockdown](https://www.mediawiki.org/wiki/Extension:Lockdown)
|
|
- [Extension:QuestyCaptcha](https://www.mediawiki.org/wiki/Extension:QuestyCaptcha)
|