{"id":34329268,"url":"https://github.com/internetee/registry","last_synced_at":"2026-03-11T20:32:16.494Z","repository":{"id":17504759,"uuid":"20292624","full_name":"internetee/registry","owner":"internetee","description":"TLD Management Software","archived":false,"fork":false,"pushed_at":"2026-02-26T20:42:25.000Z","size":133509,"stargazers_count":49,"open_issues_count":316,"forks_count":17,"subscribers_count":9,"default_branch":"master","last_synced_at":"2026-02-27T02:04:16.536Z","etag":null,"topics":["domain","epp","registry","ruby","tld"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/internetee.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-05-29T12:13:02.000Z","updated_at":"2026-02-10T12:09:52.000Z","dependencies_parsed_at":"2023-10-30T02:39:03.886Z","dependency_job_id":"e4aaaa68-42b2-4329-b36c-24655d0f2cb1","html_url":"https://github.com/internetee/registry","commit_stats":null,"previous_names":[],"tags_count":275,"template":false,"template_full_name":null,"purl":"pkg:github/internetee/registry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fregistry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fregistry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fregistry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fregistry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/internetee","download_url":"https://codeload.github.com/internetee/registry/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fregistry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30399329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T18:46:22.935Z","status":"ssl_error","status_checked_at":"2026-03-11T18:46:17.045Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["domain","epp","registry","ruby","tld"],"created_at":"2025-12-17T17:38:32.696Z","updated_at":"2026-03-11T20:32:16.488Z","avatar_url":"https://github.com/internetee.png","language":"Ruby","readme":"Domain Registry\n===============\n[![Maintainability](https://qlty.sh/gh/internetee/projects/registry/maintainability.svg)](https://qlty.sh/gh/internetee/projects/registry)\n[![Code Coverage](https://qlty.sh/gh/internetee/projects/registry/coverage.svg)](https://qlty.sh/gh/internetee/projects/registry)\n[![Documentation Status](https://readthedocs.org/projects/eeregistry/badge/?version=latest)](http://docs.internet.ee/en/latest/?badge=latest)\n\nFull stack top-level domain (TLD) management.\n\n* [Documentation](#documentation)\n* [Installation](#installation)\n* [Deployment](#deployment)\n* [Autotesting](#autotesting)\n\n\nDocumentation\n-------------\n\n* [EPP documentation](/doc/epp)\n* [EPP request-response examples](/doc/epp_examples.md)\n* [REPP documentation](https://internetee.github.io/repp-apidoc/)\n\nInstallation\n------------\n\n### Registry app\n\nRegistry based on Rails 4 installation (rbenv install is under Debian build doc)\n\nManual demo install and database setup:\n\n    cd /home/registry\n    git clone git@github.com:internetee/registry.git demo-registry\n    cd demo-registry\n    rbenv local 2.2.2\n    bundle\n    cp config/application.yml.sample config/application.yml # and edit it\n    cp config/database.yml.sample config/database.yml # and edit it\n    bundle exec rake db:setup:all # for production, please follow deployment howto\n    bundle exec rake bootstrap\n    bundle exec rake assets:precompile\n\n### Apache (Debian 7/Ubuntu 14.04 LTS)\n\n    sudo apt-get install apache2\n\nEnable ssl:\n\n    sudo a2enmod proxy_http\n    sudo mkdir /etc/apache2/ssl\n    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt\n    sudo a2enmod ssl\n    sudo nano /etc/apache2/sites-enabled/epp_ssl.conf\n\nFor Apache, registry admin goes to port 443 in production, /etc/apache2/sites-enabled/registry.conf short example:\n\n```\n\u003cVirtualHost *:443\u003e\n  ServerName your-domain\n  ServerAdmin your@example.com\n\n  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini\n  PassengerRuby /home/registry/.rbenv/shims/ruby\n  PassengerEnabled on\n  PassengerMinInstances 10\n  PassengerMaxPoolSize 10\n  PassengerPoolIdleTime 0\n  PassengerMaxRequests 1000\n\n  RailsEnv production # or staging\n  DocumentRoot /home/registry/registry/current/public\n\n  # Possible values include: debug, info, notice, warn, error, crit,\n  LogLevel info\n  ErrorLog /var/log/apache2/registry.error.log\n  CustomLog /var/log/apache2/registry.access.log combined\n\n  SSLEngine On\n  SSLCertificateFile    /etc/ssl/certs/your.crt\n  SSLCertificateKeyFile /etc/ssl/private/your.key\n  SSLCertificateChainFile /etc/ssl/certs/your-chain-fail.pem\n  SSLCACertificateFile /etc/ssl/certs/ca.pem\n\n  SSLProtocol -all +TLSv1.2\n  SSLHonorCipherOrder On\n  SSLCompression off\n  SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH\n\n  RewriteEnginriteEngine on\n  RedirectMatch ^/$ /admin\n  RedirectMatch ^/login$ /admin/login\n\n  \u003cDirectory /app/registry/registry/current/public\u003e\n      # for Apache older than version 2.4\n      Allow from all\n\n      # for Apache verison 2.4 or newer\n      # Require all granted\n      Options -MultiViews\n  \u003c/Directory\u003e\n\n  \u003cLocation /\u003e\n      Allow from none\n      Deny from all\n  \u003c/Location\u003e\n\n  \u003cLocation /admin\u003e\n      Allow from all\n  \u003c/Location\u003e\n\n  \u003cLocation /assets\u003e\n      Allow from all\n  \u003c/Location\u003e\n\u003c/VirtualHost\u003e\n```\n\nRegistrar configuration (/etc/apache2/sites-enabled/registrar.conf) is as follows:\n```\n\u003cVirtualHost *:443\u003e\n  ServerName your-registrar-domain\n  ServerAdmin your@example.com\n\n  PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini\n  PassengerRuby /home/registry/.rbenv/shims/ruby\n  PassengerEnabled on\n  PassengerMinInstances 10\n  PassengerMaxPoolSize 10\n  PassengerPoolIdleTime 0\n  PassengerMaxRequests 1000\n\n  RailsEnv production # or staging\n  DocumentRoot /home/registry/registrar/current/public\n\n  # Possible values include: debug, info, notice, warn, error, crit,\n  LogLevel info\n  ErrorLog /var/log/apache2/registrar.error.log\n  CustomLog /var/log/apache2/registrar.access.log combined\n\n  SSLEngine On\n  SSLCertificateFile    /etc/ssl/certs/your.crt\n  SSLCertificateKeyFile /etc/ssl/private/your.key\n  SSLCertificateChainFile /etc/ssl/certs/your-chain-fail.pem\n  SSLCACertificateFile /etc/ssl/certs/ca.pem\n\n  SSLProtocol -all +TLSv1.2\n  SSLHonorCipherOrder On\n  SSLCompression off\n  SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH\n\n  RewriteEngine on\n  RedirectMatch ^/$ /registrar\n  RedirectMatch ^/login$ /registrar/login\n\n  \u003cDirectory /app/registry/registrar/current/public\u003e\n      # for Apache older than version 2.4\n      Allow from all\n\n      # for Apache verison 2.4 or newer\n      # Require all granted\n\n      Options -MultiViews\n  \u003c/Directory\u003e\n\n  \u003cLocation /\u003e\n      Allow from none\n      Deny from all\n  \u003c/Location\u003e\n\n  \u003cLocation /registrar\u003e\n      Allow from all\n  \u003c/Location\u003e\n\n  \u003cLocation /assets\u003e\n      Allow from all\n  \u003c/Location\u003e\n\n  SSLVerifyClient none\n  SSLVerifyDepth 1\n  SSLCACertificateFile /home/registry/registry/shared/ca/certs/ca.cert.pem\n  SSLCARevocationPath /home/registry/registry/shared/ca/crl\n  # Uncomment in Apache 2.4\n  # SSLCARevocationCheck chain\n\n  RequestHeader set SSL_CLIENT_S_DN_CN \"\"\n  RequestHeader set SSL_CLIENT_CERT \"\"\n  \u003cLocation /registrar/sessions\u003e\n      SSLVerifyClient require\n      RequestHeader set SSL_CLIENT_S_DN_CN \"%{SSL_CLIENT_S_DN_CN}s\"\n      RequestHeader set SSL_CLIENT_CERT \"%{SSL_CLIENT_CERT}s\"\n  \u003c/Location\u003e\n\n  \u003cLocation /registrar/id\u003e\n      SSLVerifyClient require\n      Options Indexes FollowSymLinks MultiViews\n      SSLVerifyDepth 2\n      SSLOptions +StdEnvVars +ExportCertData\n  \u003c/Location\u003e\n\u003c/VirtualHost\u003e\n```\n\nRegistrant configuration (/etc/apache2/sites-enabled/registrant.conf) is as follows:\n```\n\u003cVirtualHost *:443\u003e\n    ServerName your-registrant-domain\n    ServerAdmin your@example.com\n\n    PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini\n    PassengerRuby /home/registry/.rbenv/shims/ruby\n    PassengerEnabled on\n    PassengerMinInstances 10\n    PassengerMaxPoolSize 10\n    PassengerPoolIdleTime 0\n    PassengerMaxRequests 1000\n\n    RailsEnv production # or staging\n    DocumentRoot /home/registry/registrant/current/public\n\n    # Possible values include: debug, info, notice, warn, error, crit,\n    LogLevel info\n    ErrorLog /var/log/apache2/registrant.error.log\n    CustomLog /var/log/apache2/registrant.access.log combined\n\n    SSLEngine On\n    SSLCertificateFile    /etc/ssl/certs/your.crt\n    SSLCertificateKeyFile /etc/ssl/private/your.key\n    SSLCertificateChainFile /etc/ssl/certs/your-chain-fail.pem\n    SSLCACertificateFile /etc/ssl/certs/ca.pem\n\n    SSLProtocol -all +TLSv1.2\n    SSLHonorCipherOrder On\n    SSLCompression off\n    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH\n\n    RewriteEngine on\n    RedirectMatch ^/$ /registrant\n    RedirectMatch ^/login$ /registrant/login\n\n    \u003cDirectory /app/registry/registrant/current/public\u003e\n        # for Apache older than version 2.4\n        Allow from all\n\n        # for Apache verison 2.4 or newer\n        # Require all granted\n\n        Options -MultiViews\n    \u003c/Directory\u003e\n\n    \u003cLocation /\u003e\n        Allow from none\n        Deny from all\n    \u003c/Location\u003e\n\n    \u003cLocation /registrant\u003e\n        Allow from all\n    \u003c/Location\u003e\n\n    \u003cLocation /assets\u003e\n        Allow from all\n    \u003c/Location\u003e\n\n    SSLVerifyClient none\n    SSLVerifyDepth 1\n    SSLCACertificateFile /home/registry/registry/shared/ca/certs/ca.cert.pem\n    SSLCARevocationPath /home/registry/registry/shared/ca/crl\n    # Uncomment in Apache 2.4\n    # SSLCARevocationCheck chain\n\n    RequestHeader set SSL_CLIENT_S_DN_CN \"\"\n    RequestHeader set SSL_CLIENT_CERT \"\"\n    \u003cLocation /registrant/sessions\u003e\n        SSLVerifyClient require\n        RequestHeader set SSL_CLIENT_S_DN_CN \"%{SSL_CLIENT_S_DN_CN}s\"\n        RequestHeader set SSL_CLIENT_CERT \"%{SSL_CLIENT_CERT}s\"\n    \u003c/Location\u003e\n\n    \u003cLocation /registrant/id\u003e\n        SSLVerifyClient require\n        Options Indexes FollowSymLinks MultiViews\n        SSLVerifyDepth 2\n        SSLOptions +StdEnvVars +ExportCertData\n    \u003c/Location\u003e\n\u003c/VirtualHost\u003e\n```\n\nFor Apache, REPP goes to port 443 in production, /etc/apache2/sites-enabled/repp.conf short example:\n```\n\u003cVirtualHost *:443\u003e\n    ServerName your-repp-domain\n    SSLEngine on\n    #SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL\n    SSLCertificateFile /etc/apache2/ssl/apache.crt\n    SSLCertificateKeyFile /etc/apache2/ssl/apache.key\n\n    ProxyPass / http://localhost:8080/\n    ProxyPassReverse / http://localhost:8080/\n    ProxyPreserveHost on\n    RequestHeader set X_FORWARDED_PROTO 'https'\n\n    SSLVerifyClient none\n    SSLVerifyDepth 1\n    SSLCACertificateFile /home/registry/registry/shared/ca/certs/ca.crt.pem\n    SSLCARevocationPath /home/registry/registry/shared/ca/crl\n    # Uncomment this when upgrading to apache 2.4:\n    # SSLCARevocationCheck chain\n\n    RequestHeader set SSL_CLIENT_S_DN_CN \"\"\n    RequestHeader set SSL_CLIENT_CERT \"\"\n\n    \u003cLocation /\u003e\n        Allow from none\n        Deny from all\n    \u003c/Location\u003e\n\n    \u003cLocation /repp\u003e\n        Allow from all\n        SSLVerifyClient require\n        RequestHeader set SSL_CLIENT_S_DN_CN \"%{SSL_CLIENT_S_DN_CN}s\"\n        RequestHeader set SSL_CLIENT_CERT \"%{SSL_CLIENT_CERT}s\"\n    \u003c/Location\u003e\n\u003c/VirtualHost\u003e\n```\n\nFor Apache, epp goes to port 700.\nBe sure to update paths to match your system configuration.\n/etc/apache2/sites-enabled/epp.conf short example:\n```apache\n\u003cIfModule mod_ssl.c\u003e\n    Listen 127.0.0.1:8080\n    \u003cVirtualHost 127.0.0.1:8080\u003e\n        ServerName your-epp-backend-domain\n        ServerAdmin your@example.com\n\n        PassengerEnabled on\n        PassengerMinInstances 10\n        PassengerMaxPoolSize 10\n        PassengerPoolIdleTime 0\n        PassengerMaxRequests 1000\n        PassengerRoot \"/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini\"\n        PassengerRuby \"/home/registry/.rbenv/shims/ruby\"\n\n        RailsEnv production # or staging\n        DocumentRoot \"/home/registry/registry/public\"\n\n        # Possible values include: debug, info, notice, warn, error, crit,\n        LogLevel info\n        ErrorLog \"/var/log/apache2/eppback.error.log\"\n        CustomLog \"/var/log/apache2/eppback.access.log\" combined\n\n        \u003cDirectory /\u003e\n            Options +FollowSymLinks -Indexes\n            AllowOverride None\n        \u003c/Directory\u003e\n\n        \u003cDirectory /home/registry/registry/public\u003e\n            Order allow,deny\n            Allow from all\n            Options -MultiViews -Indexes\n            AllowOverride all\n        \u003c/Directory\u003e\n    \u003c/VirtualHost\u003e\n\u003c/IfModule\u003e\n```\n\nEnable epp_ssl and restart apache\n\n    sudo a2ensite epp_ssl\n    sudo service apache2 restart\n\nNow you should see registry admin at https://your-domain\n\nAll registry demo data can be found at:\n\n    db/seeds.rb\n\nInitially you can use two type of users: admin users and EPP users.\n\nFor using EPP we are strongly recommend to install epp_proxy instead of mod_epp. You can get epp_proxy from https://github.com/internetee/epp_proxy\n\n### Wkhtmltopdf setup\n\n```\nsudo apt-get install libxext-dev libxrender1 fontconfig\n```\n\n### Certificates setup\n\n* [Certificates setup](/doc/certificates.md)\n\n\n### Deployment\n\n* [Application build and update](/doc/application_build_doc.md)\n\n### Autotesting\n\n* [Testing](/doc/testing.md)\n\n###  Github Actions CI\n\n* Github Actions CI is configured to build all the PRs.\n\n### EPP web client\n\nPlease follow EPP web client readme:\n\n    https://github.com/internetee/EPP-web-client\n\n\n### WHOIS server\n\nPlease follow WHOIS server readme:\n\n    https://github.com/internetee/whois\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finternetee%2Fregistry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finternetee%2Fregistry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finternetee%2Fregistry/lists"}