Thank you for your interest in contributing to OID (OpenVPN Isolated Docker)! This document provides guidelines and instructions for contributing.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Standards
- Commit Messages
- Reporting Bugs
- Suggesting Features
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/your-username/oid.git cd oid - Create a branch for your changes:
git checkout -b feat/your-feature-name
- Docker 20.10+ with Docker Compose v2
- Linux host (required for TUN device support)
- Git
- ShellCheck (for linting shell scripts)
-
Build the Docker image:
docker build -t oid:dev . -
Run tests (if applicable):
# Test the entrypoint script docker run --rm --device /dev/net/tun --cap-add NET_ADMIN oid:dev -
Lint the Dockerfile:
hadolint Dockerfile
-
Lint shell scripts:
shellcheck scripts/entrypoint.sh
Before creating bug reports, please check existing issues to avoid duplicates.
When creating a bug report, include:
- Clear title - Summarize the issue concisely
- Environment details - Docker version, OS, kernel version
- Steps to reproduce - Exact steps to trigger the bug
- Expected behavior - What you expected to happen
- Actual behavior - What actually happened
- Logs - Relevant container logs (
docker compose logs)
Feature suggestions are welcome! Please provide:
- Problem description - What problem does this solve?
- Proposed solution - How should it work?
- Alternatives considered - Other approaches you considered
- Use cases - Real-world scenarios where this would be useful
- Small, focused changes - One feature/fix per PR
- Follow existing patterns - Match the code style of the project
- Add tests - If adding new functionality
- Update documentation - If changing behavior or adding features
- Update documentation - README.md, comments, or docs/ as needed
- Test your changes - Verify the Docker image builds and runs correctly
- Follow commit conventions - Use conventional commit messages
- Create a PR - Fill out the PR template completely
- Respond to feedback - Address review comments promptly
- Docker image builds successfully
- Entrypoint script runs without errors
- Documentation is updated (if applicable)
- Commit messages follow conventional format
- No secrets or sensitive data in commits
- Use multi-stage builds for smaller images
- Pin base image versions (e.g.,
alpine:3.20) - Use
--no-cachefor package installations - Run as non-root user when possible
- Add health checks
- Use
#!/bin/bashshebang - Enable
set -euo pipefail - Quote all variables
- Use functions for reusable code
- Add comments for complex logic
- Use descriptive service names
- Add health checks for all services
- Set resource limits
- Use environment variables for configuration
- Document all options with comments
Follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
feat(docker): add WireGuard support
fix(scripts): handle missing .ovpn file gracefully
docs(readme): add troubleshooting section
chore(ci): update Trivy action version
If you have questions about contributing, feel free to:
- Open an issue with the "question" label
- Start a discussion in the Discussions tab
- Reach out to the maintainers
Thank you for contributing to OID!