mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-04 20:42:58 +00:00
small fix, don't worry about it
This commit is contained in:
@@ -0,0 +1,526 @@
|
||||
# Cloudreve File Manager Template
|
||||
|
||||
## Overview
|
||||
Cloudreve is a cloud storage system with support for multiple storage backends, including local, remote, and cloud storage providers.
|
||||
|
||||
## Quick Start
|
||||
```bash
|
||||
# Create docker-compose.yml with the content below
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## Docker Compose
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
cloudreve:
|
||||
image: cloudreve/cloudreve:latest
|
||||
container_name: cloudreve
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5212:5212"
|
||||
- "6888:6888"
|
||||
- "6888:6888/udp"
|
||||
environment:
|
||||
- TZ=America/New_York
|
||||
- CR_CONF_Database_Type=postgres
|
||||
- CR_CONF_Database_Host=cloudreve-db
|
||||
- CR_CONF_Database_Port=5432
|
||||
- CR_CONF_Database_User=cloudreve
|
||||
- CR_CONF_Database_Password=cloudreve
|
||||
- CR_CONF_Database_Name=cloudreve
|
||||
- CR_CONF_Redis_Server=cloudreve-redis
|
||||
- CR_CONF_Redis_Port=6379
|
||||
- CR_CONF_Site_URL=https://cloudreve.yourdomain.com
|
||||
- CR_CONF_OverwriteMode=overwrite
|
||||
volumes:
|
||||
- cloudreve-data:/cloudreve
|
||||
- cloudreve-uploads:/uploads
|
||||
- /path/to/local-storage:/storage
|
||||
depends_on:
|
||||
- cloudreve-db
|
||||
- cloudreve-redis
|
||||
networks:
|
||||
- cloudreve-network
|
||||
|
||||
cloudreve-db:
|
||||
image: postgres:17-alpine
|
||||
container_name: cloudreve-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- POSTGRES_DB=cloudreve
|
||||
- POSTGRES_USER=cloudreve
|
||||
- POSTGRES_PASSWORD=cloudreve
|
||||
- POSTGRES_HOST_AUTH_METHOD=trust
|
||||
volumes:
|
||||
- cloudreve-db:/var/lib/postgresql/data
|
||||
networks:
|
||||
- cloudreve-network
|
||||
|
||||
cloudreve-redis:
|
||||
image: redis:7-alpine
|
||||
container_name: cloudreve-redis
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- cloudreve-redis:/data
|
||||
networks:
|
||||
- cloudreve-network
|
||||
|
||||
volumes:
|
||||
cloudreve-data:
|
||||
cloudreve-uploads:
|
||||
cloudreve-db:
|
||||
cloudreve-redis:
|
||||
|
||||
networks:
|
||||
cloudreve-network:
|
||||
driver: bridge
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
- `CR_CONF_Database_*`: Database configuration
|
||||
- `CR_CONF_Redis_*`: Redis configuration
|
||||
- `CR_CONF_Site_URL`: Your site URL
|
||||
- `CR_CONF_OverwriteMode`: Configuration overwrite mode
|
||||
- `TZ`: Timezone
|
||||
|
||||
## Setup Guide
|
||||
1. **Generate Secure Password**:
|
||||
```bash
|
||||
openssl rand -base64 16
|
||||
```
|
||||
|
||||
2. **Create Directories**:
|
||||
```bash
|
||||
mkdir -p cloudreve-uploads local-storage
|
||||
```
|
||||
|
||||
3. **Deploy**:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
4. **Access**: Open http://localhost:5212
|
||||
|
||||
5. **Initial Setup**:
|
||||
- Register first account (becomes admin)
|
||||
- Configure storage backends
|
||||
- Set up user accounts
|
||||
|
||||
## Storage Backends
|
||||
|
||||
### Local Storage
|
||||
```yaml
|
||||
# In Cloudreve admin interface
|
||||
Storage Type: Local
|
||||
Path: /storage
|
||||
```
|
||||
|
||||
### S3 Compatible Storage
|
||||
```yaml
|
||||
# Configure in admin interface
|
||||
Storage Type: S3 Compatible
|
||||
Endpoint: https://s3.yourdomain.com
|
||||
Access Key: your-access-key
|
||||
Secret Key: your-secret-key
|
||||
Bucket: cloudreve
|
||||
Region: us-east-1
|
||||
```
|
||||
|
||||
### OneDrive
|
||||
```yaml
|
||||
# Configure in admin interface
|
||||
Storage Type: OneDrive
|
||||
Client ID: your-client-id
|
||||
Client Secret: your-client-secret
|
||||
Redirect URI: https://cloudreve.yourdomain.com/callback
|
||||
```
|
||||
|
||||
### Google Drive
|
||||
```yaml
|
||||
# Configure in admin interface
|
||||
Storage Type: Google Drive
|
||||
Client ID: your-client-id
|
||||
Client Secret: your-client-secret
|
||||
Redirect URI: https://cloudreve.yourdomain.com/callback
|
||||
```
|
||||
|
||||
### FTP/SFTP
|
||||
```yaml
|
||||
# Configure in admin interface
|
||||
Storage Type: FTP/SFTP
|
||||
Host: ftp.yourdomain.com
|
||||
Port: 21
|
||||
Username: your-username
|
||||
Password: your-password
|
||||
Path: /remote/path
|
||||
```
|
||||
|
||||
## Configuration Files
|
||||
|
||||
### Cloudreve Configuration
|
||||
```yaml
|
||||
# cloudreve.yml
|
||||
app:
|
||||
name: Cloudreve
|
||||
version: 3.8.1
|
||||
debug: false
|
||||
|
||||
database:
|
||||
type: postgres
|
||||
host: cloudreve-db
|
||||
port: 5432
|
||||
name: cloudreve
|
||||
user: cloudreve
|
||||
password: cloudreve
|
||||
|
||||
redis:
|
||||
host: cloudreve-redis
|
||||
port: 6379
|
||||
password: ""
|
||||
|
||||
site:
|
||||
url: https://cloudreve.yourdomain.com
|
||||
title: Cloudreve
|
||||
theme: default
|
||||
|
||||
security:
|
||||
secret_key: your-secret-key
|
||||
jwt_secret: your-jwt-secret
|
||||
|
||||
storage:
|
||||
default: local
|
||||
policies:
|
||||
- name: local
|
||||
type: local
|
||||
path: /storage
|
||||
max_size: 10737418240
|
||||
- name: s3
|
||||
type: s3
|
||||
endpoint: https://s3.yourdomain.com
|
||||
access_key: your-access-key
|
||||
secret_key: your-secret-key
|
||||
bucket: cloudreve
|
||||
region: us-east-1
|
||||
max_size: 10737418240
|
||||
|
||||
user:
|
||||
default_quota: 10737418240
|
||||
default_group: user
|
||||
registration_enabled: false
|
||||
email_verification: false
|
||||
|
||||
upload:
|
||||
chunk_size: 10485760
|
||||
concurrent_uploads: 3
|
||||
temp_dir: /tmp
|
||||
|
||||
preview:
|
||||
enabled: true
|
||||
max_size: 10485760
|
||||
formats:
|
||||
- image
|
||||
- video
|
||||
- audio
|
||||
- document
|
||||
```
|
||||
|
||||
## User Management
|
||||
|
||||
### Create User
|
||||
```bash
|
||||
# Create user via admin interface
|
||||
# Or via API
|
||||
curl -X POST "http://localhost:5212/api/v3/admin/users" \
|
||||
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"email":"user@example.com","password":"password","nickname":"John Doe","group":"user"}'
|
||||
```
|
||||
|
||||
### User Groups
|
||||
```bash
|
||||
# Create user group
|
||||
curl -X POST "http://localhost:5212/api/v3/admin/groups" \
|
||||
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"name":"poweruser","quota":536870912000,"policies":["local","s3"]}'
|
||||
```
|
||||
|
||||
## File Operations
|
||||
|
||||
### Upload Files
|
||||
```bash
|
||||
# Upload via API
|
||||
curl -X POST "http://localhost:5212/api/v3/file/upload" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN" \
|
||||
-F "file=@/path/to/file.txt" \
|
||||
-F "path=/uploads"
|
||||
```
|
||||
|
||||
### Download Files
|
||||
```bash
|
||||
# Download via API
|
||||
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
||||
"http://localhost:5212/api/v3/file/download/FILE_ID"
|
||||
```
|
||||
|
||||
### Share Files
|
||||
```bash
|
||||
# Create share link
|
||||
curl -X POST "http://localhost:5212/api/v3/share" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"file_id": "FILE_ID","password":"","expire":3600}'
|
||||
```
|
||||
|
||||
## Reverse Proxy (Traefik)
|
||||
```yaml
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.cloudreve.rule=Host(`cloudreve.yourdomain.com`)"
|
||||
- "traefik.http.routers.cloudreve.tls=true"
|
||||
- "traefik.http.routers.cloudreve.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.cloudreve.loadbalancer.server.port=5212"
|
||||
```
|
||||
|
||||
## Backup Strategy
|
||||
```bash
|
||||
# Backup Cloudreve data
|
||||
docker run --rm -v cloudreve-data:/cloudreve -v $(pwd):/backup alpine tar czf /backup/cloudreve-data-backup.tar.gz -C /cloudreve .
|
||||
|
||||
# Backup uploads
|
||||
docker run --rm -v cloudreve-uploads:/uploads -v $(pwd):/backup alpine tar czf /backup/cloudreve-uploads-backup.tar.gz -C /uploads .
|
||||
|
||||
# Backup database
|
||||
docker exec cloudreve-db pg_dump -U cloudreve cloudreve > cloudreve-db-backup.sql
|
||||
|
||||
# Restore database
|
||||
docker exec -i cloudreve-db psql -U cloudreve cloudreve < cloudreve-db-backup.sql
|
||||
|
||||
# Restore Cloudreve data
|
||||
docker run --rm -v cloudreve-data:/cloudreve -v $(pwd):/backup alpine tar xzf /backup/cloudreve-data-backup.tar.gz -C /cloudreve
|
||||
|
||||
# Restart after restore
|
||||
docker-compose restart cloudreve
|
||||
```
|
||||
|
||||
## Performance Optimization
|
||||
```yaml
|
||||
# For better performance
|
||||
environment:
|
||||
- CLOUDREVE_UPLOAD_CHUNK_SIZE=10485760
|
||||
- CLOUDREVE_UPLOAD_CONCURRENT=3
|
||||
- CLOUDREVE_PREVIEW_MAX_SIZE=10485760
|
||||
|
||||
# Resource limits
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 1G
|
||||
cpus: '1.0'
|
||||
reservations:
|
||||
memory: 512M
|
||||
cpus: '0.5'
|
||||
```
|
||||
|
||||
## Security
|
||||
- Change default admin password
|
||||
- Use HTTPS in production
|
||||
- Network access control
|
||||
- Regular backups
|
||||
- Monitor access logs
|
||||
|
||||
## API Usage
|
||||
|
||||
### Authentication
|
||||
```bash
|
||||
# Login
|
||||
curl -X POST "http://localhost:5212/api/v3/user/session" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"username":"admin","password":"your-password"}'
|
||||
```
|
||||
|
||||
### File Operations
|
||||
```bash
|
||||
# List files
|
||||
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
||||
"http://localhost:5212/api/v3/directory/PATH"
|
||||
|
||||
# Create directory
|
||||
curl -X POST "http://localhost:5212/api/v3/directory" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"path":"/new-folder"}'
|
||||
|
||||
# Delete file
|
||||
curl -X DELETE "http://localhost:5212/api/v3/file/FILE_ID" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN"
|
||||
```
|
||||
|
||||
## Client Integration
|
||||
|
||||
### WebDAV
|
||||
```bash
|
||||
# Mount via WebDAV
|
||||
davfs2 https://cloudreve.yourdomain.com/dav/ /mnt/cloudreve
|
||||
```
|
||||
|
||||
### rclone
|
||||
```bash
|
||||
# Configure rclone
|
||||
rclone config create cloudreve webdav
|
||||
rclone config set cloudreve url https://cloudreve.yourdomain.com/dav/
|
||||
rclone config set cloudreve vendor other
|
||||
rclone config set cloudreve user your-username
|
||||
rclone config set cloudreve pass your-password
|
||||
|
||||
# Sync files
|
||||
rclone sync /local/path cloudreve:/remote/path
|
||||
```
|
||||
|
||||
### Cyberduck
|
||||
- Connection type: WebDAV
|
||||
- Server: https://cloudreve.yourdomain.com/dav/
|
||||
- Username: your-username
|
||||
- Password: your-password
|
||||
|
||||
## Monitoring
|
||||
|
||||
### Health Checks
|
||||
```bash
|
||||
# Check if Cloudreve is running
|
||||
curl http://localhost:5212/api/v3/site/ping
|
||||
|
||||
# Get system info
|
||||
curl -H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
|
||||
"http://localhost:5212/api/v3/admin/summary"
|
||||
```
|
||||
|
||||
### Logs
|
||||
```bash
|
||||
# View logs
|
||||
docker-compose logs -f cloudreve
|
||||
|
||||
# Check specific logs
|
||||
docker exec cloudreve tail -f /cloudreve/logs/cloudreve.log
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
- **Database connection**: Check PostgreSQL configuration
|
||||
- **Storage issues**: Verify storage backend configuration
|
||||
- **Upload problems**: Check permissions and disk space
|
||||
- **Performance issues**: Monitor resource usage
|
||||
- **Authentication errors**: Verify user credentials
|
||||
|
||||
## Maintenance
|
||||
```bash
|
||||
# Restart service
|
||||
docker-compose restart cloudreve
|
||||
|
||||
# Update image
|
||||
docker-compose pull && docker-compose up -d
|
||||
|
||||
# Clean up old files
|
||||
docker exec cloudreve find /cloudreve/uploads -name "*.tmp" -mtime +7 -delete
|
||||
|
||||
# Optimize database
|
||||
docker exec cloudreve-db psql -U cloudreve -c "VACUUM ANALYZE;"
|
||||
```
|
||||
|
||||
## Advanced Features
|
||||
|
||||
### Custom Themes
|
||||
```yaml
|
||||
# In admin interface
|
||||
Theme: Custom
|
||||
CSS: |
|
||||
.custom-theme {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
}
|
||||
```
|
||||
|
||||
### File Preview
|
||||
```yaml
|
||||
# Enable preview for different file types
|
||||
preview:
|
||||
enabled: true
|
||||
max_size: 10485760
|
||||
formats:
|
||||
- image: jpg,jpeg,png,gif,bmp,webp
|
||||
- video: mp4,avi,mkv,mov,wmv
|
||||
- audio: mp3,wav,flac,aac
|
||||
- document: pdf,doc,docx,xls,xlsx,ppt,pptx
|
||||
```
|
||||
|
||||
### Webhook Integration
|
||||
```yaml
|
||||
# Configure webhooks for file events
|
||||
webhooks:
|
||||
- name: file_upload
|
||||
url: https://yourdomain.com/webhook
|
||||
events: ["file.upload", "file.delete"]
|
||||
secret: your-webhook-secret
|
||||
```
|
||||
|
||||
## Integration Examples
|
||||
|
||||
### Nextcloud Migration
|
||||
```bash
|
||||
# Export from Nextcloud
|
||||
# Import to Cloudreve using same directory structure
|
||||
```
|
||||
|
||||
### Home Assistant Integration
|
||||
```yaml
|
||||
# In Home Assistant configuration.yaml
|
||||
sensor:
|
||||
- platform: rest
|
||||
resource: http://cloudreve.yourdomain.com/api/v3/admin/summary
|
||||
headers:
|
||||
Authorization: Bearer YOUR_TOKEN
|
||||
value_template: "{{ value_json.storage_used }}"
|
||||
```
|
||||
|
||||
### Discord Bot Integration
|
||||
```python
|
||||
# Python Discord bot for file sharing
|
||||
import requests
|
||||
|
||||
class CloudreveBot:
|
||||
def __init__(self, api_url, token):
|
||||
self.api_url = api_url
|
||||
self.token = token
|
||||
self.headers = {"Authorization": f"Bearer {token}"}
|
||||
|
||||
def upload_file(self, file_path):
|
||||
with open(file_path, 'rb') as f:
|
||||
files = {'file': f}
|
||||
response = requests.post(
|
||||
f"{self.api_url}/api/v3/file/upload",
|
||||
headers=self.headers,
|
||||
files=files
|
||||
)
|
||||
return response.json()
|
||||
|
||||
def create_share(self, file_id):
|
||||
data = {"file_id": file_id, "expire": 3600}
|
||||
response = requests.post(
|
||||
f"{self.api_url}/api/v3/share",
|
||||
headers=self.headers,
|
||||
json=data
|
||||
)
|
||||
return response.json()
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
1. **Regular backups**: Backup data and database regularly
|
||||
2. **Monitor storage**: Keep an eye on disk usage
|
||||
3. **Use HTTPS**: Always use HTTPS in production
|
||||
4. **Secure passwords**: Use strong passwords for admin accounts
|
||||
5. **Update regularly**: Keep Cloudreve updated
|
||||
6. **Monitor logs**: Keep an eye on error logs
|
||||
7. **Test backups**: Regularly test backup restoration
|
||||
8. **Configure quotas**: Set appropriate user quotas
|
||||
9. **Use multiple backends**: Distribute storage across multiple providers
|
||||
10. **Monitor performance**: Keep an eye on resource usage
|
||||
Reference in New Issue
Block a user