mirror of
https://github.com/opencloud-eu/opencloud-compose.git
synced 2026-06-08 20:20:04 +08:00
Add README.md with documentation
This commit is contained in:
226
README.md
Normal file
226
README.md
Normal file
@@ -0,0 +1,226 @@
|
|||||||
|
# OpenCloud Compose
|
||||||
|
|
||||||
|
This repository provides Docker Compose configurations for deploying OpenCloud in various environments.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
OpenCloud Compose offers a modular approach to deploying OpenCloud with several configuration options:
|
||||||
|
|
||||||
|
- **Standard deployment** with Traefik reverse proxy and Let's Encrypt certificates
|
||||||
|
- **External proxy** support for environments with existing reverse proxies (like Nginx, Caddy, etc.)
|
||||||
|
- **Collabora Online** integration for document editing
|
||||||
|
|
||||||
|
## Quick Start Guide
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- Docker and Docker Compose installed
|
||||||
|
- Domain names pointing to your server (for production deployment)
|
||||||
|
- Basic understanding of Docker Compose concepts
|
||||||
|
|
||||||
|
### Local Development
|
||||||
|
|
||||||
|
1. **Clone the repository**:
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/opencloud-eu/opencloud-compose.git
|
||||||
|
cd opencloud-compose
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Create environment file**:
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Note**: The repository includes `.env.example` as a template with default settings and documentation. Your actual `.env` file is excluded from version control (via `.gitignore`) to prevent accidentally committing sensitive information like passwords and domain-specific settings.
|
||||||
|
|
||||||
|
3. **Configure deployment options**:
|
||||||
|
|
||||||
|
You can deploy using explicit `-f` flags:
|
||||||
|
```bash
|
||||||
|
docker compose -f docker-compose.yml -f traefik/opencloud.yml up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Or by uncommenting the `COMPOSE_FILE` variable in `.env`:
|
||||||
|
```
|
||||||
|
COMPOSE_FILE=docker-compose.yml:traefik/opencloud.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
Then simply run:
|
||||||
|
```bash
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Add local domains to `/etc/hosts`**:
|
||||||
|
```
|
||||||
|
127.0.0.1 cloud.opencloud.test
|
||||||
|
127.0.0.1 traefik.opencloud.test
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Access OpenCloud**:
|
||||||
|
- URL: https://cloud.opencloud.test
|
||||||
|
- Username: `admin`
|
||||||
|
- Password: `admin` (or as configured in `.env`)
|
||||||
|
|
||||||
|
### Production Deployment
|
||||||
|
|
||||||
|
1. **Edit the `.env` file** and configure:
|
||||||
|
- Domain names
|
||||||
|
- Admin password
|
||||||
|
- SSL certificate email
|
||||||
|
- Storage paths
|
||||||
|
|
||||||
|
2. **Configure deployment options** in `.env`:
|
||||||
|
```
|
||||||
|
COMPOSE_FILE=docker-compose.yml:docker-compose.collabora.yml:traefik/opencloud.yml:traefik/collabora.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Start OpenCloud**:
|
||||||
|
```bash
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deployment Options
|
||||||
|
|
||||||
|
### With Collabora Online
|
||||||
|
|
||||||
|
Include Collabora for document editing using either method:
|
||||||
|
|
||||||
|
Using `-f` flags:
|
||||||
|
```bash
|
||||||
|
docker compose -f docker-compose.yml -f docker-compose.collabora.yml -f traefik/opencloud.yml -f traefik/collabora.yml up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Or by setting in `.env`:
|
||||||
|
```
|
||||||
|
COMPOSE_FILE=docker-compose.yml:docker-compose.collabora.yml:traefik/opencloud.yml:traefik/collabora.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
Add to `/etc/hosts` for local development:
|
||||||
|
```
|
||||||
|
127.0.0.1 collabora.opencloud.test
|
||||||
|
127.0.0.1 wopiserver.opencloud.test
|
||||||
|
```
|
||||||
|
|
||||||
|
### Behind External Proxy
|
||||||
|
|
||||||
|
If you already have a reverse proxy (Nginx, Caddy, etc.), use either method:
|
||||||
|
|
||||||
|
Using `-f` flags:
|
||||||
|
```bash
|
||||||
|
docker compose -f docker-compose.yml -f docker-compose.collabora.yml -f external-proxy/opencloud.yml -f external-proxy/collabora.yml up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Or by setting in `.env`:
|
||||||
|
```
|
||||||
|
COMPOSE_FILE=docker-compose.yml:docker-compose.collabora.yml:external-proxy/opencloud.yml:external-proxy/collabora.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
This exposes the necessary ports:
|
||||||
|
- OpenCloud: 9200
|
||||||
|
- Collabora: 9980
|
||||||
|
- WOPI server: 9300
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
### Environment Variables
|
||||||
|
|
||||||
|
The configuration is managed through environment variables in the `.env` file:
|
||||||
|
|
||||||
|
- We provide `.env.example` as a template with documentation for all options
|
||||||
|
- Your personal `.env` file is ignored by git to keep sensitive information private
|
||||||
|
- This pattern allows everyone to customize their deployment without affecting the repository
|
||||||
|
|
||||||
|
Key variables:
|
||||||
|
|
||||||
|
| Variable | Description | Default |
|
||||||
|
|----------|-------------|---------|
|
||||||
|
| `COMPOSE_FILE` | Colon-separated list of compose files to use | (commented out) |
|
||||||
|
| `OC_DOMAIN` | OpenCloud domain | cloud.opencloud.test |
|
||||||
|
| `OC_DOCKER_TAG` | OpenCloud image tag | latest |
|
||||||
|
| `ADMIN_PASSWORD` | Admin password | admin |
|
||||||
|
| `OC_CONFIG_DIR` | Config directory path | (Docker volume) |
|
||||||
|
| `OC_DATA_DIR` | Data directory path | (Docker volume) |
|
||||||
|
| `INSECURE` | Skip certificate validation | true |
|
||||||
|
| `COLLABORA_DOMAIN` | Collabora domain | collabora.opencloud.test |
|
||||||
|
| `WOPISERVER_DOMAIN` | WOPI server domain | wopiserver.opencloud.test |
|
||||||
|
|
||||||
|
See `.env.example` for all available options and their documentation.
|
||||||
|
|
||||||
|
### Persistent Storage
|
||||||
|
|
||||||
|
For production, configure persistent storage:
|
||||||
|
|
||||||
|
```
|
||||||
|
OC_CONFIG_DIR=/path/to/opencloud/config
|
||||||
|
OC_DATA_DIR=/path/to/opencloud/data
|
||||||
|
```
|
||||||
|
|
||||||
|
Ensure proper permissions:
|
||||||
|
```bash
|
||||||
|
mkdir -p /path/to/opencloud/{config,data}
|
||||||
|
chown -R 1000:1000 /path/to/opencloud
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compose File Structure
|
||||||
|
|
||||||
|
This repository uses a modular approach with multiple compose files:
|
||||||
|
|
||||||
|
- `docker-compose.yml` - Core OpenCloud service
|
||||||
|
- `docker-compose.collabora.yml` - Collabora Online integration
|
||||||
|
- `traefik/` - Traefik reverse proxy configurations
|
||||||
|
- `external-proxy/` - Configuration for external reverse proxies
|
||||||
|
- `config/` - Configuration files for OpenCloud
|
||||||
|
|
||||||
|
## Advanced Usage
|
||||||
|
|
||||||
|
### Understanding the COMPOSE_FILE Variable
|
||||||
|
|
||||||
|
The `COMPOSE_FILE` environment variable is a powerful way to manage complex Docker Compose deployments:
|
||||||
|
|
||||||
|
- It uses colons (`:`) as separators between files (configurable with `COMPOSE_PATH_SEPARATOR`)
|
||||||
|
- Files are processed in order, with later files overriding settings from earlier ones
|
||||||
|
- It allows you to run just `docker compose up -d` without specifying `-f` flags
|
||||||
|
- Perfect for automation, CI/CD pipelines, and consistent deployments
|
||||||
|
|
||||||
|
Example configuration for production with Collabora:
|
||||||
|
```
|
||||||
|
COMPOSE_FILE=docker-compose.yml:docker-compose.collabora.yml:traefik/opencloud.yml:traefik/collabora.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Automation and GitOps
|
||||||
|
|
||||||
|
For automated deployments, using the `COMPOSE_FILE` variable in `.env` is recommended:
|
||||||
|
|
||||||
|
```
|
||||||
|
COMPOSE_FILE=docker-compose.yml:docker-compose.collabora.yml:traefik/opencloud.yml:traefik/collabora.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
This allows tools like Ansible or CI/CD pipelines to deploy the stack without modifying the compose files.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
- **SSL Certificate Errors**: For local development, accept self-signed certificates by visiting each domain directly in your browser.
|
||||||
|
- **Port Conflicts**: If you have services already using ports 80/443, use the external proxy configuration.
|
||||||
|
- **Permission Issues**: Ensure data and config directories have proper permissions (owned by user/group 1000).
|
||||||
|
|
||||||
|
### Logs
|
||||||
|
|
||||||
|
View logs with:
|
||||||
|
```bash
|
||||||
|
docker compose logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
For specific service logs:
|
||||||
|
```bash
|
||||||
|
docker compose logs -f opencloud
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
This project is licensed under the GNU General Public License v3 (GPLv3).
|
||||||
Reference in New Issue
Block a user