---
title: BESTNET क्लाउड पर Redmine सेटअप करें
description: "BESTNET Tech Blog # BESTNET-CLOUD पर Redmine बनाने के स्टेप्स Redmine 6.1 सीरीज़ लॉन्च करने के लिए Ubuntu 24.04 / Apache + Passenger / PostgreSQL / HTTPS सर्वर सेटअप गाइड यह लेख BESTNET-CLOUD पर प्रोविज़न की गई Ubuntu 24.04 LTS…"
url: "https://bestnetllc.co.jp/hi/docs/bestnet-%e0%a4%95%e0%a5%8d%e0%a4%b2%e0%a4%be%e0%a4%89%e0%a4%a1-%e0%a4%aa%e0%a4%b0-redmine-%e0%a4%b8%e0%a5%87%e0%a4%9f%e0%a4%85%e0%a4%aa-%e0%a4%95%e0%a4%b0%e0%a5%87%e0%a4%82/"
updated: "2026-10-14"
category: Tech Blog
---

# BESTNET क्लाउड पर Redmine सेटअप करें

BESTNET Tech Blog

# BESTNET-CLOUD पर Redmine बनाने के स्टेप्स

Redmine 6.1 सीरीज़ लॉन्च करने के लिए
Ubuntu 24.04 / Apache + Passenger / PostgreSQL / HTTPS सर्वर सेटअप गाइड

यह लेख BESTNET-CLOUD पर प्रोविज़न की गई Ubuntu 24.04 LTS वर्चुअल मशीन पर Redmine बनाने के स्टेप्स बताता है,
उस बिंदु तक जहाँ आप पहली बार ब्राउज़र से लॉगिन कर सकते हैं।

LDAP/LDAPS इंटीग्रेशन, external SMTP और Zabbix इंटीग्रेशन आगे आने वाले अलग लेखों में कवर किए जाएँगे।
यह गाइड एक स्थिर Redmine सर्वर पूरा करने पर केंद्रित है जो लॉगिन स्क्रीन भरोसेमंद ढंग से दिखा सके।

## इस गाइड का लक्ष्य

### एंडपॉइंट

Redmine लॉगिन स्क्रीन HTTPS पर दिखती है और आप पहली बार एडमिनिस्ट्रेटर के रूप में लॉगिन कर पाते हैं।

### इस बार का स्कोप

OS का शुरुआती सेटअप, Redmine डिप्लॉयमेंट, DB इनिशियलाइज़ेशन, Apache + Passenger और self-signed SSL।

### अगले कदम

AD / LDAPS, external SMTP, Zabbix agent डिप्लॉयमेंट और मॉनिटरिंग इंटीग्रेशन अलग से किए जाएँगे।

## आर्किटेक्चर ओवरव्यू

| OS | Ubuntu Server 24.04 LTS |
| --- | --- |
| Web/AP | Apache + Passenger |
| DB | PostgreSQL |
| Redmine | 6.1.1 |
| Ruby | Ubuntu 24.04 में शामिल Ruby 3.2 सीरीज़ |
| पब्लिकेशन का तरीका | 80 → 443 रीडायरेक्ट, 443 self-signed सर्टिफिकेट के साथ listen करता है |
| डिप्लॉयमेंट लोकेशन | /opt/redmine/releases/redmine-6.1.1 |

 **नोट:**
वेरिफिकेशन की आसानी के लिए यह लेख self-signed सर्टिफिकेट इस्तेमाल करता है।
प्रोडक्शन एनवायरनमेंट के लिए हम कमर्शियल या internal CA सर्टिफिकेट से बदलने की सिफारिश करते हैं।

## Step 1. OS अपडेट और आवश्यक पैकेजों का इंस्टॉलेशन

सबसे पहले, OS को लेटेस्ट वर्शन में अपडेट करें और Redmine बिल्ड तथा PostgreSQL कनेक्शन के लिए जरूरी पैकेज एक साथ इंस्टॉल करें।
`libyaml-dev` को शामिल करना न भूलें।

```
sudo apt update
sudo apt full-upgrade -y

sudo apt install -y 
  build-essential 
  ruby-full ruby-dev bundler 
  zlib1g-dev libpq-dev libyaml-dev pkg-config 
  postgresql postgresql-contrib 
  apache2 apache2-dev 
  imagemagick ghostscript 
  curl ca-certificates gnupg dirmngr apt-transport-https 
  ldap-utils tar
```

## Step 2. Passenger इंस्टॉलेशन

ऑफिशियल Passenger रिपॉज़िटरी जोड़ें और उसे Apache मॉड्यूल के रूप में इंस्टॉल करें।

```
curl https://oss-binaries.phusionpassenger.com/auto-software-signing-gpg-key-2025.txt 
  | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/phusion.gpg >/dev/null

echo "deb https://oss-binaries.phusionpassenger.com/apt/passenger noble main" 
  | sudo tee /etc/apt/sources.list.d/passenger.list

sudo apt update
sudo apt install -y passenger libapache2-mod-passenger

sudo a2enmod passenger
sudo a2enconf servername
echo "ServerName rdm.bestnetllc.co.jp" | sudo tee /etc/apache2/conf-available/servername.conf

sudo apache2ctl configtest
sudo systemctl reload apache2
```

निम्न से ऑपरेशन वेरिफाई करें:

```
sudo /usr/bin/passenger-config validate-install
sudo /usr/sbin/passenger-memory-stats
```

## Step 3. Redmine यूज़र और डिप्लॉयमेंट डायरेक्टरी की तैयारी

अपग्रेड आसान बनाने के लिए releases डायरेक्टरी वाले तरीके से डिप्लॉय करें।

```
sudo adduser --system --group --home /opt/redmine --shell /bin/bash redmine

sudo mkdir -p /opt/redmine/releases
sudo chown -R redmine:redmine /opt/redmine
```

## Step 4. PostgreSQL सेटअप

Redmine के लिए एक डेडिकेटेड role और database बनाएँ।

```
sudo -u postgres psql
```

```
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD '<DB_PASSWORD>' NOINHERIT VALID UNTIL 'infinity';
CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
q
```

## Step 5. Redmine सोर्स कोड डिप्लॉयमेंट

यह उदाहरण वर्शन 6.1.1 इस्तेमाल करता है। मेंटेनेंस रिलीज़ के हिसाब से जरूरत अनुसार बदलें।

```
cd /tmp
curl -L -o redmine-6.1.1.tar.gz https://www.redmine.org/releases/redmine-6.1.1.tar.gz

sudo -u redmine tar xzf redmine-6.1.1.tar.gz -C /opt/redmine/releases
sudo ln -sfn /opt/redmine/releases/redmine-6.1.1 /opt/redmine/current
```

## Step 6. database.yml कॉन्फ़िगरेशन

यह एक आम pitfall है। केवल PostgreSQL डेफिनिशन रखें और MySQL सैंपल हटा दें।

```
cd /opt/redmine/releases/redmine-6.1.1

sudo tee config/database.yml > /dev/null <<'EOF'
production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "<DB_PASSWORD>"
  encoding: utf8
  schema_search_path: public
EOF
```

एन्क्रिप्शन keys के लिए `configuration.yml` भी तैयार करें।

```
sudo -u redmine cp config/configuration.yml.example config/configuration.yml
```

```
default:
  database_cipher_key: "<LONG_RANDOM_STRING>"

production:
```

## Step 7. bundle install और डेटाबेस इनिशियलाइज़ेशन

gem इंस्टॉलेशन, secret जनरेशन, डेटाबेस माइग्रेशन और शुरुआती डेटा लोडिंग एक्सीक्यूट करें।

```
sudo chown -R redmine:redmine /opt/redmine

sudo -u redmine -H bash -lc '
  cd /opt/redmine/releases/redmine-6.1.1
  rm -rf vendor/bundle
  bundle config set --local path vendor/bundle
  bundle config set --local without "development test"
  bundle install
  bundle exec rake generate_secret_token
  RAILS_ENV=production bundle exec rake db:migrate
  RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
'
```

   **नोट:**
अगर `yaml.h not found` दिखे, तो `libyaml-dev` मौजूद नहीं है।
अगर bundle टार्गेट्स में `mysql2` दिखे, तो संभवतः MySQL कॉन्फ़िगरेशन
`config/database.yml` में बचा रह गया है।

## Step 8. Self-Signed सर्टिफिकेट बनाना

यह उदाहरण CA:FALSE और SAN के साथ self-signed सर्टिफिकेट बनाता है।
पुराने तरीकों की तुलना में यह तरीका ब्राउज़र और Apache की ज्यादा वार्निंग से बचाता है।

```
sudo mkdir -p /etc/apache2/ssl

sudo tee /tmp/rdm-openssl.cnf > /dev/null <<'EOF'
[req]
default_bits = 4096
prompt = no
default_md = sha256
x509_extensions = v3_req
distinguished_name = dn

[dn]
C  = JP
ST = Tokyo
L  = Tokyo
O  = BestNetLLC
OU = IT
CN = rdm.bestnetllc.co.jp

[v3_req]
basicConstraints = critical,CA:FALSE
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = rdm.bestnetllc.co.jp
EOF

sudo openssl req -x509 -nodes -newkey rsa:4096 -sha256 -days 3650 
  -keyout /etc/apache2/ssl/rdm.bestnetllc.co.jp.key 
  -out /etc/apache2/ssl/rdm.bestnetllc.co.jp.crt 
  -config /tmp/rdm-openssl.cnf

sudo chmod 600 /etc/apache2/ssl/rdm.bestnetllc.co.jp.key
sudo chmod 644 /etc/apache2/ssl/rdm.bestnetllc.co.jp.crt
```

## Step 9. Apache VirtualHost कॉन्फ़िगरेशन

पोर्ट 80, 443 पर रीडायरेक्ट करता है, और पोर्ट 443 Redmine की `public` डायरेक्टरी को DocumentRoot के रूप में सेट करता है।
वास्तविक path सीधे इस्तेमाल करने से symlink से होने वाले 403 एरर से बचाव होता है।

```
sudo a2enmod ssl rewrite headers

sudo tee /etc/apache2/sites-available/redmine.conf > /dev/null <<'EOF'
<VirtualHost *:80>
    ServerName rdm.bestnetllc.co.jp
    RewriteEngine On
    RewriteRule ^/(.*)$ https://rdm.bestnetllc.co.jp/$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName rdm.bestnetllc.co.jp
    DocumentRoot /opt/redmine/releases/redmine-6.1.1/public

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/rdm.bestnetllc.co.jp.crt
    SSLCertificateKeyFile /etc/apache2/ssl/rdm.bestnetllc.co.jp.key

    PassengerRuby /usr/bin/ruby
    PassengerAppEnv production

    <Directory /opt/redmine/releases/redmine-6.1.1/public>
        Options FollowSymLinks
        AllowOverride all
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/redmine_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/redmine_ssl_access.log combined
</VirtualHost>
EOF

sudo a2ensite redmine
sudo a2dissite 000-default
sudo a2dissite default-ssl

sudo apache2ctl configtest
sudo systemctl reload apache2
```

## Step 10. परमिशन एडजस्टमेंट और रीस्टार्ट

Apache से Redmine के अंतर्गत आने वाली डायरेक्टरीज़ तक पहुँचा जा सके, इसके लिए पैरेंट डायरेक्टरीज़ को भी एक्सीक्यूट परमिशन दें।

```
sudo chmod 755 /opt
sudo chmod 755 /opt/redmine
sudo chmod 755 /opt/redmine/releases
sudo chmod 755 /opt/redmine/releases/redmine-6.1.1
sudo chmod 755 /opt/redmine/releases/redmine-6.1.1/public

sudo -u redmine mkdir -p /opt/redmine/releases/redmine-6.1.1/tmp/pdf
sudo -u redmine mkdir -p /opt/redmine/releases/redmine-6.1.1/public/assets

sudo touch /opt/redmine/releases/redmine-6.1.1/tmp/restart.txt
sudo systemctl restart apache2
```

## Step 11. पहली बार एक्सेस की जाँच

सबसे पहले, लोकल कनेक्टिविटी वेरिफाई करें।

```
curl -kI https://127.0.0.1/
openssl s_client -connect 127.0.0.1:443 -servername rdm.bestnetllc.co.jp </dev/null
```

ब्राउज़र में `https://rdm.bestnetllc.co.jp` एक्सेस करें।
self-signed सर्टिफिकेट होने के कारण ब्राउज़र वार्निंग दिखेगी, लेकिन अगर Redmine की लॉगिन स्क्रीन दिखाई दे, तो सेटअप सफल है।

 **शुरुआती लॉगिन:**
यूज़रनेम `admin` / पासवर्ड `admin`

पहली बार लॉगिन करने के बाद, एडमिनिस्ट्रेटर पासवर्ड तुरंत बदलें और
Redmine के “Administration → Settings → General” में होस्टनेम और प्रोटोकॉल को `https` के अनुरूप सेट करें।

## सेटअप के दौरान आने वाले आम pitfalls

### 1. Passenger रिपॉज़िटरी की GPG एरर

पुराना key URL इस्तेमाल करने पर यह `NO_PUBKEY` के साथ फ़ेल हो सकता है।
हर जगह सिर्फ़ ऑफिशियल नई key फ़ाइल इस्तेमाल करने पर यह समस्या आमतौर पर हल हो जाती है।

### 2. `yaml.h not found` के कारण Psych का बिल्ड फ़ेल होता है

ऐसे में अक्सर इसका कारण `libyaml-dev` का मौजूद न होना होता है।
OS पैकेज जोड़ने के बाद `bundle install` दोबारा चलाएँ।

### 3. `mysql2` bundle टार्गेट्स में दिखाई देता है

`config/database.yml` में MySQL की सैंपल डेफिनिशन बची रह जाने पर ऐसा होने की संभावना रहती है।
केवल PostgreSQL के लिए production डेफिनिशन रखकर फ़ाइल को व्यवस्थित करने से यह हल हो जाता है।

### 4. `ERR_SSL_PROTOCOL_ERROR` दिखाई देता है

कुछ मामलों में 443 का VirtualHost सक्रिय नहीं होता, या कोई दूसरी साइट अब भी सक्रिय बनी रहती है।
`apache2ctl -S` से सक्रिय vhost जाँचने पर समस्या का कारण पहचानना आसान हो जाता है।

### 5. 403 Forbidden आता है

`current` symlink के ज़रिए एक्सेस करने पर परमिशन की समस्या आ सकती है।
वास्तविक path को सीधे DocumentRoot के रूप में सेट करें और `/opt` तथा उसके नीचे की डायरेक्टरीज़ को सर्च परमिशन दें; इससे समस्या आमतौर पर आसानी से सुधर जाती है।

## सारांश

इन स्टेप्स के साथ, आप BESTNET-CLOUD पर Ubuntu 24.04 / Apache + Passenger / PostgreSQL कॉन्फ़िगरेशन वाला
Redmine सर्वर बनाकर उस बिंदु तक पहुँच सकते हैं जहाँ HTTPS के ज़रिए पहली बार लॉगिन किया जा सके।

- Redmine सोर्स कोड का डिप्लॉयमेंट पूरा हो चुका है
- PostgreSQL से कनेक्ट किया जा सकता है
- Apache + Passenger पर ऐप्लिकेशन स्टार्ट होता है
- self-signed सर्टिफिकेट के साथ 443 पर listen किया जा सकता है
- ब्राउज़र से लॉगिन स्क्रीन दिखाई देती है

अगले लेख में हम AD / LDAPS ऑथेंटिकेशन, external SMTP और Zabbix के ज़रिए मॉनिटरिंग इंटीग्रेशन की ओर बढ़ेंगे।

© BestNet Tech Blog
