PastePoint is a secure, feature-rich file-sharing service designed for local networks. It enables users to share files and communicate efficiently through peer-to-peer WebSocket connections. Built with a Rust-based backend using Actix Web and an Angular frontend with SSR support, PastePoint prioritizes security, performance, and usability.
Local Network Communication:
File Sharing:
Security:
Cross-Platform Compatibility:
pastepoint/
āāā client/ # Angular-based frontend with SSR
āāā server/ # Rust-based backend
āāā nginx/ # Nginx configuration and security settings
āāā scripts/ # Shell scripts for SSL certificate generation
āāā docker-compose.yml # Docker Compose configuration
āāā README.md # Project documentation
Cargo.toml
: Dependency definitions.src/main.rs
: Entry point for the server.src/lib.rs
: Server modules and routes.config/
: Configuration files for development and production environments.tests/
: Unit tests for the server.angular.json
: Angular project configuration with SSR settings.src/app/
: Angular application code.src/server.ts
: SSR server implementation with Express.src/main.server.ts
: Angular SSR bootstrap entry point.public/
: Static assets, including SEO files (robots.txt, sitemap.xml).src/app/core/i18n/
: Internationalization files.src/app/core/services/
: Services for WebSocket communication and metadata.src/environments/
: Environment configurations.docker-compose.yml
: Manages containers for:scripts/generate-certs.sh
: Script to generate self-signed certificatesscripts/prepare_prod.sh
: Script to update configurations for productionnginx/nginx.conf
: Main Nginx configurationnginx/security_settings.conf
: Security and rate limiting settingsnginx/security_headers.conf
: Security headers configurationnginx/locations.conf
: Location block configurations including SEO routesnginx/ssl.conf
: SSL/TLS settings.nvmrc
)rust-toolchain
)winget install OpenSSL
Clone the repository:
git clone https://github.com/SloMR/pastepoint.git
cd pastepoint
Generate SSL certificates (required for HTTPS):
./scripts/generate-certs.sh
Configure for Local Network (Optional): If you want to run PastePoint on your local network instead of just localhost:
./scripts/configure-network.sh
This will prompt you to enter your local IP address and update all necessary configuration files.
Build and Start Services:
docker compose up --build
Access PastePoint:
https://<your-local-ip>
https://<your-local-ip>:9000
https://<your-local-ip>/health
CERT_PATH
: Path to SSL certificates (default: /etc/ssl/pastepoint
)SERVER_NAME
: Server name for SSL (default: pastepoint.com www.pastepoint.com
)RUST_BUILD_MODE
: Rust build mode (default: release
)NPM_BUILD_CONFIG
: npm build configuration (default: docker
)SERVER_ENV
: Server environment (default: production
)PORT
: SSR server port (default: 4000
)HOST
: SSR server host (default: 0.0.0.0
)cd server
cargo build
cargo run
cd client
npm install
ng serve
npm run build && npm run serve:ssr:client
cargo test
npm test
server/config/*.toml
: Update configurations for development and production environments.client/src/environments/*
: Update environment variables for development and production.Common Issues:
SSL Certificate Errors
Run: ./scripts/generate-certs.sh
Local Network Access Issues
./scripts/configure-network.sh
docker compose ps
SSR Issues
docker logs pastepoint-ssr
We welcome contributions! Please follow these steps:
git checkout -b feat/amazing-feature
)git push origin feat/amazing-feature
)Code Standards:
rustfmt
and clippy
rules.prettierrc
and eslint
rulesThis project is licensed under the GPL-3.0 License. See the LICENSE file for details.
For issues or feature requests:
Certificate Management:
Data Privacy:
Component | Minimum Version | Recommended Version | Notes |
---|---|---|---|
Docker | 20.10.0 | 24.0.0 | Required for BuildKit features |
Node.js | 18.0.0 | 22.14.0 | Required for Angular features |
Rust | 1.75.0 | 1.85.0 | Required for async features |
Windows | 10 (1909) | 11 22H2 | WSL2 support needed |
Linux | Kernel 5.4 | Kernel 6.x | For optimal performance |
Hardware Requirements:
Network: