[
  {
    "path": "Asissterr.md",
    "content": "> Rivalz sunucularınızda Asissterr otomatik claimlesin siz uğraşmayın.\n\n> Edge'den [Asissterr](https://x.com/Ruesandora0/status/1808228728889033005)'i açın.\n\n> Phantom ile bağlanın ve bir extensionda oto claim'i kurun alttaki kod iile.\n\n#\n\n```\nfunction dailyClaim() {\n    // Butonun sınıf adını kullanarak butonu seç\n    var claimButton = document.querySelector(\"button.inline-flex.items-center.justify-center.whitespace-nowrap.rounded-md.text-sm.font-medium.ring-offset-background.transition-colors.disabled\\\\:pointer-events-none.disabled\\\\:opacity-50.focus-visible\\\\:outline-\\\\[darkgrey\\\\].border.border-input.bg-background.hover\\\\:bg-accent.hover\\\\:text-accent-foreground.h-10.px-4.py-2.mt-4.md\\\\:mt-12.max-w-96.w-full\");\n    \n    if (claimButton) {\n        claimButton.click();\n        console.log(\"Daily claim yapıldı\");\n    } else {\n        console.log(\"Daily claim butonu bulunamadı\");\n    }\n}\n\n// 12 saatlik (43200000 ms) süreyle tekrarla\nsetInterval(dailyClaim, 43200000);\n\n// İlk başlatma\ndailyClaim();\n```\n\n#\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/b484022a-82b2-4d92-a2d0-b5be37db345d)\n\nWarning: Don’t paste code into the DevTools Console that you don’t understand or haven’t reviewed yourself. This could allow attackers to steal your identity or take control of your computer. Please type ‘allow pasting’ below and hit Enter to allow pasting.Understand this warning\nhatası alanlar consola allow pasting yazarak hatayı geçebilir.\n"
  },
  {
    "path": "AutoFragClaim.md",
    "content": "\n# Fragmentz Auto Claim Bot\n\nBildiğiniz gibi Rivalz için client çalıştırıyoruz.\n\nBunun yanında Fragment NFT'leri claim ederek gelecekte Intel Indirimi alacağız.\n\nCOMMON, MID, RARE, ULTRA ve HYPER olarak 5 adet NFT özelliği bulunmakta ve bu özelliklerinin her birinin indirim oranı farklı şekilde olmakta. \n\nNFT'leri claim edebilmek için faucetten alınmış tokeniniz olması gerekmektedir.\n\n\n\n## Gereksinimler\n\n```\nsudo apt update\nsudo apt upgrade -y\n\nsudo apt install -y software-properties-common\nsudo add-apt-repository ppa:deadsnakes/ppa\nsudo apt update\nsudo apt install -y python3.9 python3.9-venv python3.9-dev\n\nsudo apt install -y apt-transport-https ca-certificates curl software-properties-common\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg\necho \"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\n\nsudo apt update\nsudo apt install -y docker-ce\n\nsudo systemctl start docker\nsudo systemctl enable docker\nsudo usermod -aG docker $USER\n```\n  \n## Kurulum\n\nEğer tüm gereksinimler yüklüyse öncelikle gerekli dosyalarımızı çekelim.\n\n```bash\ngit clone https://github.com/Dtractus/DTRivalz.git\n\n```\n\nİndirdiğimiz dosyanın içerisine girelim.\n\n```bash\ncd DTRivalz\n\n```\n\nBağlı olan cüzdanınızdan claim işlemi yapılması için cüzdanınızın private key'i gereklidir. \nBu private key'i .env dosyası içerisinde saklayacağız.\nBuradaki cüzdan/sunucu güvenliği tamamen sizin sorumluluğunuzda, ona göre.\n\nAşağıdaki kodu kullanarak .env dosyamızın içerisine girelim ve sadece en baştaki PRIVATE_KEY kısmını dolduralım. Herhangi bir şekilde tırnak işareti kullanmanıza gerek yok. \n\n```bash\nnano .env\n\n```\n\nYazdıktan sonra CTRL + X ardından Y diyerek dosyamızı kaydedelim.\n\nArdından docker ile built edelim;\n\n```bash\ndocker build -t dtrivalz .\n\n```\n\nBaşarıyla built ettiysek artık çalıştırabiliriz;\n\n\n```bash\ndocker run -d --env-file .env --name autofrag dtrivalz\n\n```\n\nTebrikler, başarıyla container'ı oluşturdunuz. Container'ı kontrol etmek için aşağıdaki komutu kullanabilirsiniz.\n\n\n```bash\ndocker logs -f autofrag\n\n```\n## Geri Bildirim\n\nHerhangi bir geri bildiriminiz varsa, lütfen dtractus@gmail.com adresinden bana ulaşın.\n\n  \n"
  },
  {
    "path": "AutoFragmentzV2.md",
    "content": "# **Rivalz Fragmentz v2 Oto Claim Bot**\n\nBu repo, **Rivalz AI** platformunda **Fragmentz v2** token'larını otomatik olarak mintlemek (claim etmek) için geliştirilmiş bir Python botudur. Bot, kullanıcıya kolay bir kurulum ve kullanım deneyimi sunmayı amaçlar.\n\n## **Özellikler**\n\n- **Rainbow Wallet**'ı otomatik olarak indirir, başlatır ve cüzdanı içe aktarır.\n- **Rivalz2** ağını cüzdana ekler.\n- Web3 ile cüzdan bakiyesi sorgulaması yapar.\n- **Fragmentz v2** token'larını mintler (claim eder).\n- Kullanıcıdan sadece gerekli bilgilerin girilmesini bekler ve tüm işlemleri otomatik olarak yapar.\n\n---\n\n## **Gereksinimler**\n\n### **Yazılım Gereksinimleri**\nBotu çalıştırmak için aşağıdaki yazılımlar gereklidir:\n\n- **Python 3** (Python 3.6 ve üzeri - Otomatik yüklenir)\n- **pip** (Python paket yöneticisi - Otomatik yüklenir)\n- **Gerekli pip Paketleri** selenium web3 python-dotenv webdriver-manager pyvirtualdisplay termcolor (Otomatik yüklenir)\n- **Google Chrome** (Chrome tarayıcısı - Otomatik yüklenir)\n- **ChromeDriver** (Webdriver - Otomatik yüklenir)\n- **Xvfb Sanal Ekran** (Otomatik yüklenir)\n- **Rainbow Wallet** Chrome uzantısı (Otomatik yüklenir)\n\n### **Kurulum Adımları**\n\nAşağıdaki adımları izleyerek gerekli yazılımları otomatik olarak kurabilir ve botu çalıştırabilirsiniz.\n\n---\n\n### **1. Otomatik Kurulum için Script Kullanımı**\n\n#### **Linux/Mac Kullanıcıları için**\n\nLinux veya Mac işletim sisteminde kurulum ve çalışma için aşağıdaki script'i kullanabilirsiniz:\n\n1. Repoyu sunucunuza klonlayın:\n   ```bash\n   git clone https://github.com/mehmet0150/Rivalz-Oto-Claim.git\n   ```\n2. Yeni bir screen oluşturun:\n   ```bash\n   screen -S fragmentz-mk\n   ```\n3. ilgili klasöre girin:\n   ```bash\n   cd Rivalz-Oto-Claim\n   ```\n4. Otomatik kurulum dosyasına gerekli yetkiyi verin ve çalıştırın:\n    ```bash\n    chmod +x install_and_run.sh  # Script'e çalıştırma izni ver\n    ./install_and_run.sh  # Script'i çalıştır\n    ```\n5. Bot çalışmaya başladıktan sonra screen'den `ctrl` + `a` + `d` ile çıkış yapın.\n\n6. Botun çalışması için gerekli olan **Rivalz test ethereumlarını** cüzdanınıza sıklıkla almayı unutmayın.\n\n### **2. .env Dosyasını Oluşturma ve Dosyanın İçeriği**\n\nScript çalıştırıldığında öncelikle gerekli yazılımları kuracak ardından kullanıcıdan **Private Key** ve **Password** bilgileri istenecektir. Bu bilgiler `.env` dosyasına kaydedilecektir.\n\nBotun çalışabilmesi için aşağıdaki iki bilgi script tarafından `.env` dosyasına otomatik olarak eklenecektir:\n\n- **PRIVATE_KEY**: Fragmentz v2 için kullanmak istediğiniz cüzdanınızın private key'i. Bu, Web3 ile cüzdanı içe aktarmak için gereklidir.\n- **PASSWORD**: Rainbow Wallet cüzdanının şifresi.\n\nÖrnek `.env` dosyası:\n\n```env\nPRIVATE_KEY=your_private_key_here\nPASSWORD=your_wallet_password_here\n```\nScript'in sonunda bot otomatik olarak çalışacaktır.\n\n**Not: Cüzdanınızın güvenliği tamamen size aittir. Otomasyon verdiğiniz Private Key ile sadece mintleme işlemi yapmak üzere tasarlanmıştır. Bu botu indirip kullanıyorsanız bu sorumluluğu alıyorsunuz demektir.**\n\n---\n\n### **Kodun Çalışması**\n\n#### **Botun Adımları:**\n\n1. **Rainbow Wallet**'ı başlatır ve cüzdanınızı içe aktarır.\n2. **Rivalz2** ağını cüzdanınıza ekler.\n3. **Cüzdan bakiyesi** sorgulanır (Rivalz eth_balance).\n4. **Fragmentz v2 mintleme** işlemi yapılır.\n5. Tüm bu işlemler başarıyla tamamlandıktan sonra, bot otomatik olarak bekleme durumuna geçer ve bir soanraki mintleme zamanını beklemeye başlar. İşlemler sırasında beklenmeyen bir hata oluşursa bot sona erer. Zaman zaman botu kontrol etmeniz sorunlara erken müdahale etme imkanı sağlar.\n\n#### **Scriptin Çalıştırılması:**\n\nBotu ilk çalıştırmada **install_and_run.sh** (Linux/Mac) ile başlatmanız gerekir. Bot, gerekli yazılımları yükleyecek, `.env` dosyasını oluşturacak ve ardından işlemlere başlayacaktır. Otomasyon herhangi bir zamanda hata verip kapanırsa **Rivalz-Oto-Claim** klasöründe olduğunuzdan emin olduktan sonra **./rivalz-oto-claim.py** komutu ile tekrar çalıştırabilirsiniz. Eğer her şey doğru şekilde yapılandırıldıysa mintleme işlemleri kaldığı yerden devam edecektir.\n\n---\n\n## **Yazılımın Çalışması**\n\n### **Otomasyon Adımları ve İşleyişi:**\n\n1. **Rainbow Wallet Setup**: Rainbow Wallet cüzdanınız otomatik olarak içe aktarılır. Private Key ve Password bilgilerinizi kullanarak cüzdanı güvenli bir şekilde cüzdana aktarırsınız.\n   \n2. **Yeni Ağ Ekleme**: `Rivalz2` ağı cüzdanınıza otomatik olarak eklenir.\n\n3. **Cüzdan Bağlantısı**: Bot, cüzdanınızı Rivalz platformuna bağlar.\n\n4. **\"Rivalz ETH\" Bakiye Sorgulama**: Yeterli \"Rivalz ETH\" bakiyesi olup olmadığı sorgulanır. İşlem ücretlerini karşılayacak yeterli ETH yoksa, bot 30 saniye aralıklarla bakiye kontrolü yapar. Yeterli bakiye oluşması durumunda işlemlerine otomatik olarak devam eder.\n\n5. **Fragmentz v2 Mintleme**: Yeterli ETH bakiyesi varsa, Fragmentz token'larını mintleme işlemi başlatılır. \n\n   - **Mintleme Sayısı**: Bot, mintlenebilir Fragmentz sayısını kontrol eder.\n   - **Mintleme**: Token'lar başarılı bir şekilde mintlendikten sonra, işlem tamamlanır.\n\n---\n\n## **Sorun Giderme (Troubleshooting)**\n\nEğer bot çalışırken herhangi bir sorunla karşılaşırsanız, aşağıdaki adımları izleyebilirsiniz:\n\n1. **Python veya pip eksikse**: Script, eksik Python veya pip'i otomatik olarak yüklemeyi deneyecektir.\n2. **ChromeDriver Hatası**: Eğer ChromeDriver ile ilgili bir hata alırsanız, bot otomatik olarak gerekli sürümü yüklemeye çalışacaktır.\n3. **Cüzdan Bağlantısı Sorunu**: Eğer cüzdanınız bağlanmazsa, `.env` dosyasındaki bilgileri tekrar kontrol edin ve doğru girildiğinden emin olun.\n\n---\n\nBu README, botun nasıl kurulacağını, çalıştırılacağını ve yapılandırılacağını adım adım açıklar. Yalnızca belirtilen script'leri çalıştırarak, botu kolayca kurabilir ve kullanabilirsiniz.\n\n"
  },
  {
    "path": "Koii.md",
    "content": "\n# Yancık-4\n\n> Hali hazırda olan sunucularımıza Koii Node'u kurulumu.\n\n> Yakında Linux kurulumu da hazırlarız.\n\n> Şimdilik detaylı incelemeden kurulum şeklinde paylaşıyorum.\n\n> Zamanla bir çok alternatif paylaşırım.\n\n> Tüm Rivalz sunucularına kurulabilir.\n\n# Kurulum\n\n> Rivalz sunucumuza bağlanıyoruz remote desktop ile.\n\n> Koii'de mümkün mertebe ne kadar token toplayabiliyorsanız o kadar iyi.\n\n> [Buradan](https://www.koii.network/node?promo=92E8B4895861) indiriyoruz.\n\n> Kurulumda yeni bir key oluşturuyoruz diyerek cüzdan açalım pinimizi belirledikten sonra.\n\n> Akabinde Finnie extension'ı [buradan](https://chromewebstore.google.com/detail/finnie/cjmkndjhnagcfbpiemnkdpomccnjblmj) ana pc'den indirelim (Bu bir wallet node extension değil)\n\n> Cüzdanı import edelim Finnie'ye ve faucet alalım [buradan](https://faucet.koii.network/faucet).\n\n> İlk önce Mail verify edelim, akabinden ref code sanırım 5 token veriyor: `92E8B4895861`\n\n> Mail onaylamadan ref: alma/verme olmuyor gördüğüm.\n\n> Tüm tokenleri topladıktan sonra (Bazıları problemli ama çözülüyor bi şekilde)\n\n> Akabinde Koii Node aktif edip tokenlerin istediğimiz kadarını stake edelim.\n\n> Tasklar gelirse RUN edelim. (Burada taskları incelemedim bazılarına asla bulaşmazdım)\n\n#\n\n> Seting kısmı bu şekilde olsun.\n\n<img width=\"1467\" alt=\"Ekran Resmi 2024-07-16 18 20 08\" src=\"https://github.com/user-attachments/assets/6e4eba4d-72db-4743-bc95-894ad962998a\">\n\n*\n\n<img width=\"1487\" alt=\"Ekran Resmi 2024-07-16 18 20 34\" src=\"https://github.com/user-attachments/assets/f30c0f1d-c5e5-422e-9b59-c3a1b3244961\">\n\n*\n\n<img width=\"1240\" alt=\"Ekran Resmi 2024-07-16 18 20 43\" src=\"https://github.com/user-attachments/assets/5cf8d33e-06bf-4ddc-9bb2-332c4f872965\">\n\n\n#\n\n> Şu an node çalışır durumda\n\n<img width=\"1499\" alt=\"Ekran Resmi 2024-07-16 18 22 14\" src=\"https://github.com/user-attachments/assets/c9afde07-0d2d-40c8-a314-61e12be65484\">\n\n#\n\n> tokenomics: https://www.koii.network/whitepaper.pdf\n"
  },
  {
    "path": "Network3 ubuntu kurulumu",
    "content": "# Network3-ubuntu-kurulum\noncelikle dosyayi sunucumuza indiriyoruz \n```console\nwget https://network3.io/ubuntu-node-v1.1.tar\n```\ndosyayi cikaralim \n```console\ntar -xf ubuntu-node-v1.1.tar\n```\ndizine gecis yapalim\n```console\ncd ubuntu-node\n```\nnodu baslatalim\n```console\nsudo bash manager.sh up\n```\nnode is ready mesajini gorduk mu tamamdir\nsimdi panelden kontrol edelim puanimizi tarayicimiza asagidaki linki duzenleyip yapistiralim\n```console\nhttps://account.network3.ai/main?o=sunucu-ip:8080\n```\nE-postanızı bağlamak isterseniz, önce e-postanızla panele  giriş yapın. Sonra kontrol panelinde current node yazan yerde  '+' düğmesine tıklayın. Açılan  kutuya nodun özel anahtarını girebilirsiniz. Nodu bağlamak için özel anahtarı şu komutla alabilirsiniz\n```console\nsudo bash manager.sh key\n```\n"
  },
  {
    "path": "Network3-Ubuntu.md",
    "content": "# Network3 Ubuntu Kurulum Rehberi\n\n\n### Node'u İndirme\n\n\n1. **Tar Dosyasını İndirin:**\n   - `wget` komutunu kullanarak tar dosyasını indirin:\n     ```bash\n     wget https://network3.io/ubuntu-node-v1.1.tar\n     ```\n\n### Node'u Kurma\n\n\n2. **Tar Dosyasını Çıkartın:**\n   - `tar` komutunu kullanarak tar dosyasını çıkartın:\n     ```bash\n     tar -xf ubuntu-node-v1.1.tar\n     ```\n   - Bu komut `ubuntu-node` adında bir dizin oluşturacaktır.\n\n3. **`ubuntu-node` Dizine Geçin:**\n   - Yeni oluşturulan `ubuntu-node` dizinine geçin:\n     ```bash\n     cd ubuntu-node\n     ```\n\n4. **Node'u Başlatın:**\n   - Node'u başlatmak için `manager.sh` scriptini çalıştırın:\n     ```bash\n     sudo bash manager.sh up\n     ```\n   - Terminalde `node is ready` ifadesini görene kadar bekleyin, bu node'un başarıyla başlatıldığını gösterir.\n   - line:50 ifconfig not found hatası alanlar uygulasın.\n     ```bash\n      cd\n      sudo apt-get update\n      sudo apt-get install net-tools\n      /sbin/ifconfig eth0 up\n     ```\n   - wg0 hatası alanlar kurulumu baştan yapsın o zaman hata kalkıyor \n### Dashboard'a Erişme\n\n\n2. **Başka Bir Makinede Tarayıcı Açın:**\n   - Başka bir makinede herhangi bir web tarayıcısını açın.\n\n3. **Dashboard URL'sini Ziyaret Edin:**\n   - Şu URL'ye gidin:\n     ```plaintext\n     https://account.network3.ai/main?o=xx.xx.xx.xx:8080\n     ```\n   - `xx.xx.xx.xx` kısmını Ubuntu makinenizin gerçek IP adresiyle değiştirin.\n\nSitede \"Current Node\" sağ tarafında + butona basınca bizden private key isteyecek şimdi onu alacağız. Terminale dönüyoruz.\n ```bash\nsudo bash manager.sh key\n ```\nPrivate keyimizi aldık tarayıcıya dönüp yapıştıralım. Kurulumu tamamlıyoruz.\n\nBu URL, diğer makineden Ubuntu node'unun dashboard'ına erişim sağlar.\n\n---\n"
  },
  {
    "path": "Nodepay-cli.md",
    "content": "# Kurulum Talimatları\n\n1. Güncelleme:\n\n    ```bash\n    sudo apt update && sudo apt upgrade -y\n    ```\n\n2. `curl` paketini yükleyin:\n\n    ```bash\n    sudo apt install curl -y\n    ```\n\n3. `nodepay_setup.sh` scriptini indirin:\n\n    ```bash\n    curl -O https://gist.githubusercontent.com/Bo0tstrap/479627be43db165b4016291ff76ea2f1/raw/eed5ade7f5aee685db1fd50ddbe60c324e209cf8/nodepay_setup.sh\n    ```\n\n4. İndirilen script'e çalıştırma izni verin:\n\n    ```bash\n    chmod +x nodepay_setup.sh\n    ```\n\n5. Yeni bir `screen` başlatın:\n\n    ```bash\n    screen -S nodepay\n    ```\n\n6. Scripti çalıştırın:\n\n    ```bash\n    ./nodepay_setup.sh\n    ```\n7. Gerekli izni verin:\n\n    ```bash\n    chmod +X Nodepay-cli/nodepay.py\n    ```\n\n8. Scripti çalıştırın:\n\n    ```bash\n    python3 Nodepay-cli/nodepay.py\n    ```\n\nSon komutta sizden np token isteyecek, nodepay dashboard a girip F12 yapıp şu kırmızı ile işaretlediğim yerden alın (np token limiti 14 gün maalesef yani 14 günde bir yenilemeniz gerekiyor)\n    ![np](https://github.com/user-attachments/assets/731dd642-46f2-41f4-9de5-60df7e34a1bf)\n    \n\nEğer 8. adımda `No module named loguru` adında bir hata alıyorsanız bu paketi yükleyip tekrar deneyin : \n\n```bash\npip install loguru --break-system-packages\n```\n"
  },
  {
    "path": "OasisTerminal.md",
    "content": "# Oasis Terminal\n![image](https://github.com/Dwtexe/Rivalz-TerminalAddons/assets/63106683/d27be0f4-e8cd-443a-a067-f7fe3abdb6be)\n\nOasis Terminal'e hoş geldiniz! Bu README, Ubuntu sisteminde update_token.js ve oasis_terminal.js komut dosyalarının kurulumunu ve kullanımını adım adım açıklayacaktır.\n\n## Gereklilikler\nBaşlamadan önce, Ubuntu sisteminizde aşağıdaki önkoşulların yüklü olduğundan emin olun:\n\nNode.js\\\nnpm\n\n## Oasis.ai hesabınız yoksa aşağıdaki linkten açın:\n\n[KAYIT OL](https://github.com/ruesandora/Rivalz/blob/main/Yanc%C4%B1klar.md#oasisai)\n\n### Scripti Çalıştıralım\n```\nwget https://raw.githubusercontent.com/ruesandora/Rivalz/main/oasis.sh\n```\n> izinleri verelim ve çalıştıralım.\n```\nchmod +x oasis.sh\n./oasis.sh\n```\n>screen oluşturalım:\n```\nscreen -S oasis\n```\n\n>oasis dizinine geçin:\n```\ncd oasis\n```\n\n>update_token.js komut dosyasını çalıştırmak için aşağıdaki komutu çalıştırın:\\\n```\nnode update_token.js\n```\nE-postanızı, şifrenizi ve istemci adınızı girmek için istemleri izleyin.\nKomut dosyası giriş yapacak, uzantı tokenini alacak ve bu token ile database.js dosyasını oluşturacaktır.\n\n### Oasis Terminal'i Çalıştırma\n\n>Terminalde hala oasis dizininde olduğunuzdan emin olun.\\\n>Oasis Terminal'i başlatmak için aşağıdaki komutu çalıştırın:\\\n```\nnode oasis_terminal.js\n```\nScreendan CTRL A + D ile çıkalım.\nArtık hazırsınız! Oasis Terminal ile mutlu puan kazanmalar dilerim!\n"
  },
  {
    "path": "README.md",
    "content": "<h1 align=\"center\">Rivalz</h1>\n\n> Selamlar, teşvikli Rivalz node va app testleri yaptım. Katılırken bir çok şey öğreneceğinizi düşünüyorum\n\n> Ben hetzner'den yaptım bunu fakat kendi sunucu sağlayacınızda da benzer şeyleri yaparsınız (olmadı contabocular pR atar)\n\n> Donanım kısmı için her sunucu olur, sunucunuz ne kadar iyise o kadar rewards demek, miner olcaz sonuçta..\n\n#\n<details>\n  <summary> <h1> Hetzner VPS Windows Kurulumu</summary> </h1>\n    \n<h1 align=\"center\">Sadece Hetner VPS için geçerlidir</h1>\n\n\n> Windows Server 2019 Englishi bul - Mouth butonuna tıkla - 3. numarada ki ikona tıkla ve sunucuna bağlan\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/d0ea7c04-2998-4447-bf6e-62610b76ee5d)\n\n> Açılan yeni sekmede sunucu bilgilerinizi girmenizi isteyecek. \n\n> Açılan sekmede Ctrl + Alt + Del butonu var sağ altta, tıklıyoruz sonrasında windows kurulumu başlayacak.\n\n> Gui seçeneğini seçmeyi unutmuyoruz.\n\n> Sonrasında mavi arkaplanlı kısıma geçicek hiç bir ayarı değiştirmeden Nexte bas ardından Install Now butonuna tıklıyoruz. \n\n> Sonrasında 2. sıradaki Desktop Experince yazana tıklıyoruz.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/a09a37af-48c8-43ce-9ae8-007e65ed306f)\n\n> Sonraki aşamada Custom: Install Windows only yazana tıkla ve Hetzner paneline geri dön. \n\n> Bu sefer Iso Images kısmına Virtio yazın ve fotodaki işaretli sürümü mounth edin.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/0c2b193d-aa76-477a-8a4a-e9aef71dc765)\n\n> Sunucuya geri dönün ve Load Driver butonuna tıklayın, ardından görseldeki sürümü seçin.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/c016e3b3-fff5-4831-8c0d-cff468c3091f)\n\n> 3 Tane Driver göreceksiniz 3üne de delete işlemi yapın.\n\n> Silme işlemi bittikten sonra New butonuna tıkla ve herhangi bir ayarı değiştirmeden direk Apply butonuna basalım. \n\n> Sonrasında gelen uyarıda yes butonuna tıklayalım.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/3ca7fb7d-0860-4035-a86f-d91817ef8d5e)\n\n> Şimdi Hetzner Paneline tekrar dönüyoruz Iso images kısmına tıklıyoruz.\n\n> Ve arama yerinden Windows Server 2019 Englishi tekrar mounth et.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/ad01131d-99ff-4db5-88fb-4b749bbe2b9b)\n\n> Sunucuya geri dön, Refresh butonuna bas Next butonuna bas. Windowsun kurulmasını bekle.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/a07cb8bb-9327-4d1b-9fc5-e9e759c981e6)\n\n> Sunucumuza off/on yapıyor tekrar bağlanıyoruz.\n\n> Akabinde şifre belirleme alanı geliyor burda 8 haneli bir şifre girin büyük harf istiyor\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/8d513ee7-7302-47b4-8a31-0fa04f5c2d61)\n\n> Windowsun kilit ekranı kısmına geldiğinizde sağ alttaki Ctrl + Alt + Del butonuna tıklayın ve masaüstüne geçiş yapın. \n\n> İlk açılışta Server Manager kısmı açılıyor. Alttaki görseli takip edin 3 ve 4. kısımdaki tikler fotodakiyle aynı olsun.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/8f38a679-dea8-49a9-b931-4b01994a5173)\n\n> Kurulum Aşaması bitti şimdi Ayar kısımlarına geçiyoruz.\n\n> Hetznere geri dönün ve Iso Images kısmından bu sefer Virtio win 248i mounth edin\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/210356bd-462c-43db-b27e-f04487dce13a)\n\n> Sunucuya geri dönün Windows logosuna sağ tıkla ve Device Manageri seç.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/9fb7f205-719c-481f-8051-ad88603a0328)\n\n> Açılan ekranda Other Devices bölümünde 3 veya 4 tane Sarı ünlem görüyorsunuz\n\n> Önce Ethernet yazana sağ tık yapın ve update driverse tıklayın.\n\n> Browse my computer... yazanı seç ve fotoğraftaki adımları takip et\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/acc911b3-fcfb-4570-9614-c7f9e2e9623f)\n\n> Sağ kısımda Mavi panel açılacak Network başlıklı, Yes butonuna basın. \n\n> Geri kalan 2 veya 3 Adet sarı ünleme aynı işlemleri yapın.\n\n#\n\n> Windows logosuna tıklayın ve arama yerine Remote Desktop Settings yazın.\n\n> Açılan ekrandaki Enable Remote Desktop kısmını aktif edin.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/448d8fd2-e841-4719-b95b-a765faf9e707)\n\n\n> Kişisel bilgisayarınızda Uzaktan Masaüstü bağlantı programı var onu açın.\n\n> Mac'de Microsoft Remote Desktop - Windows'da Windows Remot isminde olmalı.\n\n> Sunucu bilgilerinizi yazıp bağlanın.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/90d5a984-c824-4834-9966-835fc4cee65d)\n</details>\n\n<details>\n  <summary> <h1> Contabo VPS Windows Kurulumu</summary> </h1>\n    \n<h1 align=\"center\">Sadece Contabo VPS için geçerlidir</h1>\n\n> Bu işlem için contabo  Aylık 1.5$ istiyor. Normalde Contaboya Windows kurmak isterseniz 6$ masraf çıkartıyor ama bu yöntemle bunu 1.5$a düşebiliyorsunuz.\n\n> Contabo hesabınıza giriş yapın, Control panelinden Custom Imagese tıklayın. Add Custom image butonuna tıklayın\n\n> Bilgilendirme mesajı gösterirse yes diyip geçin 1. kısımda anlattığım şeyi söylüyor size.\n\n> Karşınıza açılan Panelde verdiğim bilgileri girin.\n\n> Image URL: https://archive.org/download/newIsoForContabo/newIsoForContabo.iso\n>\n> Image Name: Windows Contabo\n>\n> Os Type: Windows\n>\n> Version: 2019\n>\n> Description: Rues\n![image](https://github.com/enzifiri/Rivalz/assets/76253089/71a3ff23-0075-4abc-934a-c6208623d7ac)\n\n> Upload butonuna basın ve dolmasını bekleyin. Bu adımda yüklenmesi contabodan kaynaklı olarak 1-2 saat sürebiliyor. Yüklendikten sonra diğer adıma geçin.\n\n# Kurduğumuz İso dosyasını sunucuya mounth etme adımı\n> Vps kontrol kısmına gidin, Önce Cloud init kısmını yeşil yapın, sonra Re install butonuna basın.\n![image](https://github.com/enzifiri/Rivalz/assets/76253089/d00b1652-51e7-4239-9ce6-5333a1adcf60)\n\n> Görseldeki adımları sırasıyla yapın.\n> Windows Contaboyu seçtikten sonra Install butonuna basın. 5 Dakika sonra bir sonraki adıma geçin.\n![image](https://github.com/ruesandora/Rivalz/assets/76253089/ea4eac88-f4a9-4291-b9e1-bb7a4fd854bf)\n\n\n# Windows kurulumu başlayacak, şimdi VNC ile sunucumuza bağlanmamız gerekiyor. \n> Windows pc kullanıyosanız Mobaxterm ile bağlanabilirsiniz.\n> New Session oluşturup VNCyi seçin, VNC bağlantı bilgilerinizi bir sonraki adımda nasıl öğrenebileceğinizi göstericem.\n![image](https://github.com/enzifiri/Rivalz/assets/76253089/ee192e2b-1ded-48fc-b558-109a04c2a553)\n\n# VNC bilgilerinim nerede?\n\n> VPS control kısmında sunucunuzu bulun ve manage butonuna tıklayın VNC Informationda bilgileriniz yazıyor.\n\n> VNC ile bağlanınca mouse sıkıntısı oluyor, bu yüzden mouse kullanmak yerine TAB tuşu ve Enter tuşu ile gerekli işlemleri yapabilirsiniz.\n![image](https://github.com/enzifiri/Rivalz/assets/76253089/cc81709b-df3b-49e6-94e4-0b3f1717dfa3)\n\n# Windows Kurulumunu tamamlayalım.\n\n> Mavi arkaplanlı kısım gelecek hiç bir ayarı değiştirmeden Nexte bas ardından Install Now butonuna tıklıyoruz. \n\n> Sonrasında 2. sıradaki Desktop Experince yazana tıklıyoruz.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/a09a37af-48c8-43ce-9ae8-007e65ed306f)\n\n> Sonraki aşamada Custom: Install Windows only yazana tıklayın.\n\n> Bu kısımı lütfen iyi okuyun atlarsanız diskiniz gözükmeyecektir.\n\n> Load Driver butonuna tıklayın\n> Browse butonuna tıklayın ve ardından D: disketindeki (177 ile başlayan) > virio-win klasörü > amd64 > 2k19 klasörünü seçin ve Ok butonuna tıklayın.\n> Eğer doğru klasörünü seçtiyseniz Red Hat SCSI ... ile başlayan bir text gelecek onu seçip next butonuna bas.\n\n![image](https://github.com/enzifiri/Rivalz/assets/76253089/1fc9b04f-d7f9-4bbf-9677-3e0f2a89e0dc)\n\n> New butonuna bas, hiç bi ayar değişmeden Apply butonuna bas ve Next yap.\n\n![image](https://github.com/enzifiri/Rivalz/assets/76253089/7a6a13cb-72c5-4cd7-940d-dd0a8043e613)\n\n> Sunucumuza off/on yapıyor tekrar bağlanıyoruz. (EĞER SİYAH EKRANDA KALDIYSANIZ BUNU YAPIN NORMALDE OTOMATİK YAPIYOR)\n\n> Akabinde şifre belirleme alanı geliyor burda 8 haneli bir şifre girin büyük harf istiyor\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/8d513ee7-7302-47b4-8a31-0fa04f5c2d61)\n\n> Windowsun kilit ekranı kısmına geldiğinizde sağ alttaki Ctrl + Alt + Del butonuna tıklayın ve masaüstüne geçiş yapın.\n![image](https://github.com/enzifiri/Rivalz/assets/76253089/1796694a-5a90-479d-9c98-6682684c5a3b)\n\n> İlk açılışta Server Manager kısmı açılıyor. Alttaki görseli takip edin 3 ve 4. kısımdaki tikler fotodakiyle aynı olsun.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/8f38a679-dea8-49a9-b931-4b01994a5173)\n\n# Windows Server Ayarlarımızı tamamlayalım. \n\n> Şifreyi ayarlayıp giriş yaptıktan sonra Windows logosuna sağ tıkla ve Device Manageri seç.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/9fb7f205-719c-481f-8051-ad88603a0328)\n\n> Açılan ekranda Other Devices bölümünde 3 veya 4 tane Sarı ünlem görüyorsunuz\n\n> Önce Ethernet yazana sağ tık yapın ve update driverse tıklayın.\n\n> Browse my computer... yazanı seç ve fotoğraftaki adımları takip et\n\n![image](https://github.com/enzifiri/Rivalz/assets/76253089/e207a615-4ac1-40fb-a087-b1fe919b1660)\n\n\n> Sağ kısımda Mavi panel açılacak Network başlıklı, Yes butonuna basın. \n\n> Geri kalan 2 veya 3 Adet sarı ünleme aynı işlemleri yapın.\n\n#\n\n> Windows logosuna tıklayın ve arama yerine Remote Desktop Settings yazın.\n\n> Açılan ekrandaki Enable Remote Desktop kısmını aktif edin.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/448d8fd2-e841-4719-b95b-a765faf9e707)\n\n\n> Kişisel bilgisayarınızda Uzaktan Masaüstü bağlantı programı var onu açın.\n\n> Mac'de Microsoft Remote Desktop - Windows'da Windows Remot isminde olmalı.\n\n> Sunucu bilgilerinizi yazıp bağlanın.\n> Kullanıcı Adı: Administrator\n> Şifre: Windows kururken girdiğiniz şifre\n![image](https://github.com/enzifiri/Rivalz/assets/76253089/454b08a5-bdf5-4c1b-b9a9-3b31cc7ac67b)\n\n# Windows kurulumu bitti, Şimdi Rivalz Nodeu kurmaya devam edebilirsiniz.\n\n</details>\n\n<details>\n  <summary> <h1> Ubuntu VPS Sunucu Kurulumu </summary> </h1>\n    <h1 align=\"center\">Sadece Ubuntu için geçerlidir</h1>\n    \n> Sunucuya bağlandığınızı farz ederek devam ediyorum.\n> Sunucu güncelleme, libfuse2 ve gereklilikleri yüklüyoruz.\n```\nsudo apt update -y && sudo apt upgrade -y\n```\n```\nsudo apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm-dev libnss3-dev libfuse2\n```\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/72cb8fa9-4079-47f1-a41f-5b609cc4a3a1)\n\n> ekran açalım.\n```\nscreen -S rivalz\n```\n\n> rivalz clienti indirelim.\n```\nwget https://api.rivalz.ai/fragmentz/clients/rClient-latest.AppImage\n```\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/c1393ff3-f43b-4b3b-8620-79db8c937b50)\n\n> indirdiğimiz dosyayı executable yapalım.\n```\nchmod +x rClient-latest.AppImage\n```\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/cb35396c-4c4b-4f16-ad0a-ab7ed3ca0501)\n\n> dosyayı açalım.\n```\n./rClient-latest.AppImage --no-sandbox\n```\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/e556d8ba-64d0-4bf9-aec6-02beb0ae9fb4)\n> bir sorun çıkmaz ise karşınıza bu ekran gelecek.\n> \n> bundan sonra storage belirleyip, wallet girerek yapabilirsiniz. tebrikler! linuxda rclient açabiliyorsunuz artık.\n\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/0ab8f196-0c17-44bc-b536-e1a25445357a)\n\n</details>\n\n# Rivalz Node Kurulumu\n\n> Rivalz hesap açıyoruz [buradan](https://rivalz.ai?r=Ruesandora0)\n\n> Burada cüzdan, x (formerly twitter) ve discord her şey bağlayın.\n\n#\n\n> Remote ile bağlandığımız ekrana geri dönüyoruz.\n\n> Microsoft Edge'i indiriyoruz Remota'a (suncuya)\n\n> rivalz.ai sitesine girip dowland windows diyoruz\n\n> Kurulumu yapıyoruz\n\n#\n\n> Kurulum tamamlandıktan sonra, önce metmaask cüzdan adresimizi giriyoruz\n\n> Storage Control'den free space neye müsade ediyorsa o rakamı giriyoruz\n\n> 3-4 GB daha düşük yazın \n\n> Sonra başlatıyoruz node'u ve hayırlı olsun.\n\n>  rClient uygulamasında sol üstte view sekmesi var oradan reload'a basıp, node'u tekrar çalıştırın\n\n<img width=\"1251\" alt=\"Ekran Resmi 2024-05-25 00 38 38\" src=\"https://github.com/ruesandora/Rivalz/assets/101149671/cdf68d07-c897-4e5a-93d8-b34e2c4a82ee\">\n\n#\n\n> Akabinde rivalz'da LOYALTY NFTs kısmını yapmayı unutmayın mintlein 10 NFT'yi.\n\n> Rivalz hakkında link paylaşmak isterseniz [burayı](https://t.me/ruesshare/21528) kullanabilirsiniz.\n"
  },
  {
    "path": "UbuntuKurulumu.md",
    "content": "# Ubuntu Desktop Rivalz Kurulumu\n\n> Repo'yu RC için katkıda bulunan [Mehmet](https://github.com/mehmet0150)'e teşekkürler <3\n\n#\n\n> Aşağıdaki komutlar ile Ubuntu sunucunuza desktop özelliği kazandırabilir.\n\n> Ardından windows RDP veya başka bir uzaktan bağlantı programıyla Rivalz, Chrome, Nodepay, Oasis ve Network3 kurulumlarını yapabilirsiniz. \n\n> Birkaç gündür deneyimliyorum. Rivalz için 200 puana ulaşamadım. Ancak ortalama 100 puan civarında getirisi oluyor. \n\n> Diğer saydıklarım ise şimdilik windows sunucusunda olduğu gibi çalışıyor.\n\n> Tüm sunucularımızın etinden kemiğinden faydalanmak için Rivalz, Nodepay, OasisAI, Network3 kurabilirsiniz. [Burada](https://github.com/ruesandora/Rivalz/blob/main/Yanc%C4%B1klar.md) mevcut.\n\n\n#\n\n> Öncelikle root klasöründe yeni bir klasör oluşturalım:\n\n```ruby\nmkdir ubuntu-rivalz\n```\n\n> Klasöre girelim ve aşağıdaki komutu çalıştıralım.\n\n```ruby\ncd ubuntu-rivalz\nnano setup_rivalz.sh\n```\nAçılan dosyaya aşağıdaki kod bloğunun en üstünde değişiklik yaparak yapıştıralım. Yeni bir kullanıcı adı ve şifre oluşturacağız. Komutların üzerinde ne işe yaradığı yazıyor. Şifre ve kullanıcı adı için şu karakterleri kullanmayın: ; | & $ ` \\ ' “ < > ( ) * ? [ ] { } # ~ % !\n\n```ruby\n#!/bin/bash\n\n# Uzak masaüstü için kullanıcı ve şifre değişkenlerini tanımlayın\n# Root kullanmayın\nUSER=\"KULLANICI ADI\"\nPASSWORD=\"ŞİFRE\"\n\n# Paket listesini günceller\napt update && apt upgrade -y\n\n# GNOME Masaüstünü yükler\nsudo apt install -y ubuntu-desktop\n\n# Uzak masaüstü sunucusunu (xrdp) kurar\nsudo apt install -y xrdp\n\n# USER kullanıcısını şifreyle ekler\nsudo useradd -m -s /bin/bash $USER\necho \"$USER:$PASSWORD\" | sudo chpasswd\n\n# USER kullanıcısını yönetim hakları için sudo grubuna ekler\nsudo usermod -aG sudo $USER\n\n# xrdp'yi GNOME masaüstünü kullanacak şekilde yapılandırır\necho \"gnome-session\" > ~/.xsession\n\n# xrdp hizmetini yeniden başlatır\nsudo systemctl restart xrdp\n\n# Başlangıçta xrdp'yi etkinleştirir\nsudo systemctl enable xrdp\n\n# Rivalz.ai rClient için gereklilikleri kurar\nsudo apt install -y wget\n\n# Rivalz.ai rClient AppImage'ı indirir\nwget https://api.rivalz.ai/fragmentz/clients/rClient-latest.AppImage -O rClient-latest.AppImage\n\n# AppImage'ı çalıştırılabilir hale getirir\nchmod +x rClient-latest.AppImage\n\n# Eğer mevcut değilse Belgeler dizinini oluşturur\nsudo -u $USER mkdir -p /home/$USER/Documents\n\n# AppImage'ı kullanıcının Belgeler dizinine taşır\nsudo mv rClient-latest.AppImage /home/$USER/Documents/rClient-latest.AppImage\n\n# rClient'in sahibini belirtilen kullanıcıyla değiştirir\nsudo chown $USER:$USER /home/$USER/Documents/rClient-latest.AppImage\n\necho \"Kurulum tamamlandi. GNOME Desktop, xrdp ve Rivalz.ai rClient kuruldu. Lutfen VPSFix.sh dosyasini calistiriniz.\"\n\n```\n\n``` CTRL + X ``` tuşlarına ve ```Y ``` tuşuna basalım, ardından ```ENTER``` tuşuna basalım.\n\nDosyayı kullanılabilir hale getirelim.\n\n```ruby\nchmod +x setup_rivalz.sh\n```\n\nŞimdi scripti çalıştıralım.\n\n```ruby\n./setup_rivalz.sh\n```\n\nTüm kurulumlar yapıldıktan sonra ubuntuda kurulan rclient'lerin dashboard'da görünmesini engelleyen hatayı düzeltelim. ```setup-rivalz``` klasöründen devam ediyoruz.\n\n```ruby\nnano VPSFix.sh\n```\nAşağıdaki scripti olduğu gibi yapıştıralım.\n\n```ruby\n#!/bin/bash\n\n# Version 1.1\n\n# Hizmet dosyası yolunu tanımlar\nSERVICE_FILE=\"/etc/systemd/system/default-interface-config.service\"\n\n# Komut dosyasının root ayrıcalıklarıyla çalıştırılıp çalıştırılmadığını kontrol eder\nif [ \"$EUID\" -ne 0 ]; then\n  echo \"Lutfen root olarak çaliştirin.\"\n  exit 1\nfi\n\n# Zaten yüklü değilse ethtool'u yükler\nif ! command -v ethtool &> /dev/null; then\n  echo \"ethtool bulunamadi, yukleniyor...\"\n  apt-get update\n  apt-get install -y ethtool\nfi\n\n# Varsayılan ağ arayüzünü alır\nDEFAULT_INTERFACE=$(ip route show default | awk '/default/ {print $5}')\n\n# systemd hizmet dosyasını oluşturur\ncat <<EOL > $SERVICE_FILE\n[Unit]\nDescription=Configure default network interface\nAfter=network.target\n\n[Service]\nType=oneshot\nExecStart=/usr/sbin/ethtool -s $DEFAULT_INTERFACE speed 1000 duplex full autoneg off\nRemainAfterExit=yes\n\n[Install]\nWantedBy=multi-user.target\nEOL\n\n# Yeni hizmeti tanımak için systemd'yi yeniden yükler\nsystemctl daemon-reload\n\n# Hizmetin önyüklemede başlatılmasını sağlar\nsystemctl enable default-interface-config.service\n\n# Starts the service immediately\nsystemctl start default-interface-config.service\n\necho \"Varsayilan arayuz yapilandirmasi hizmeti $DEFAULT_INTERFACE arayuzune yuklendi ve baslatildi.\"\n```\n\n``` CTRL + X ``` tuşlarına ve ```Y ``` tuşuna basalım, ardından ```ENTER``` tuşuna basalım.\nDosyayı kullanılabilir hale getirelim.\n\n```ruby\nchmod +x VPSFix.sh\n```\n\nŞimdi scripti çalıştıralım.\n\n```ruby\n./VPSFix.sh\n```\n\nKurulum bu kadar. Şimdi Windows uzak Masaüstü programı ile sunucumuca bağlanalım. Sunucumuzun IP adresini giriyoruz.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/f7d00889-b44e-48bb-b98f-cab38b3cc7a8)\n\n\nScript içine yazdığımız kullanıcı adı ve şifresini giriyoruz.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/75ad52bd-2bfe-427a-9204-b7844b8a4219)\n\nHerşey doğru bir şekilde tamamlandıysa bizi ubuntu masaüstü karşılayacak. Sol üstte ```Activities``` sekmesine basıyoruz. Eğer rıvalz dışında chrome üzerinden eklenti kuracaksanız (nodepay vb.) ```Firefox``` ile chrome indirip eklentileri yükleyebilirsiniz. Rivalz için okla gösterilen yere basıyoruz ve açılan ekranda ```Documents``` klasöründe rclient bizi bekliyoruz. Çift tıklayarak çalıştırabilirsiniz.\n\n![image](https://github.com/ruesandora/Rivalz/assets/101149671/6c0939f7-a592-46a2-81c7-c376b2fa2a73)\n\n**```NOT 1:``` Sunucunuzun özelliklerine göre masaüstündeki tıklamalar biraz geç algılanabilir, lütfen sabırlı olun.**\n\n**```NOT 2:``` Masaüstünde yaptığınız tüm işlemler sunucunun tamamında etkili olabileceği ve içerisinde çalışan diğer nodelara etki edebileceği için lütfen sadece gerekli işlemleri yapın.**\n\n**```NOT 3:``` Kurulumla ilgili tüm sorumluluk kuran kişiye aittir. Oluşabilecek herhangi bir hatadan veya kayıptan kuran kişi tamamen kendisi sorumludur.**\n\n**```NOT 4:``` Kurulumdan sonra uzak masaüstüne bağlanırken sorun yaşayanlar aşağıdaki kodu deneyebilirler.(Login failed ve siyah ekranda kalma problemleri)**\n```ruby\nsysctl -a | grep disable_ipv6\n```\nYukarıdaki kodun çıktısında **net.ipv6.conf.lo.disable_ipv6** değeri **1** olarak dönüyorsa aşağıdaki kodu çalıştırın.\n```ruby\nsysctl -w net.ipv6.conf.lo.disable_ipv6=0\n```\nŞimdi bağlanmayı tekrar deneyebilirsiniz.\n"
  },
  {
    "path": "Yancıklar.md",
    "content": "> İster sunucularınızda ister cihazlarınızda çalıştıracağınız extension-nodelar\n\n#\n\n* aktifler\n\n> [Distribute](https://r.distribute.ai/rues): Eski oasis yenilendi (2m$ küsür seed fundingi var.)\n\n> [Gaea](https://app.aigaea.net/register?ref=ganhrBl3zp9cWN) - misson kısmından baslangıcta iyi ödül geliyor.\n\n> [Minion Lab](https://app.minionlab.ai/?referralCode=BKmubgib): Yakında 2.2m$ seed tamamladı, ton cüzdanınızı bağlamayı unutmayın.\n\n> Aşinasınızdır projeye: [LayerEdge](https://dashboard.layeredge.io/) , koda ihtiyacınız varsa: `2TERmpmU`\n\n> [Dawn](https://chromewebstore.google.com/detail/dawn-validator-chrome-ext/fpdkjdnhkakefebpekbdhillbhonfjjp): belkide en önemlisi olabilir: - koda ihtiyacınız varsa: `b7t69p`\n\n> [Gradient](https://app.gradient.network/signup?code=XBC1WY), belki unutuldu ama ben çalıştırıyorum\n\n> Teneo [buradan](https://chromewebstore.google.com/detail/teneo-community-node/emcclcoaglgcpoognfiggmhnhgabppkm) extension - koda ihtiyacınız varsa: `rYZur` - [kayıt linki](https://dashboard.teneo.pro/dashboard) \n\n#\n\n* belirsizler\n\n> Vana ağında [YKYR](https://chromewebstore.google.com/detail/ykyr/gfogbpcdlcihfaejpmdhigejhpckdamh) çok bir bilgi yok.\n\n> [BlockMesh](https://app.blockmesh.xyz/register?invite_code=3e203584-b216-45f0-9005-eff31376a657) - fikrim yok pek ilgilenmiyorum ama paylaşayım.\n\n#\n\n*  bitenler\n\n> [Nodepay](https://app.nodepay.ai/register?ref=pvAqqadUHkSZcrP) (Bitti, tatlı bir droptu)\n\n> [Network3](https://account.network3.ai/register_page?rc=6ef6d1a8) (Bitti, kötü bir droptu)\n\n#\n\n> Tüm yancıkların ref linkini paylaşabileceğiniz yer için [burayı](https://t.me/+sTSzRlNWIpNiNjE0) kullanabilirsiniz.\n\n> Dahası gelecek [telegramda](https://t.me/RuesAnnouncement) duyururum, bugların düzelmesini bekliyorum.\n"
  },
  {
    "path": "auto refresher.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Auto Refresh Iframe</title>\n    <style>\n        body {\n            font-family: Arial, sans-serif;\n            text-align: center;\n            margin-top: 50px;\n        }\n        input, button {\n            padding: 10px;\n            margin: 10px;\n            font-size: 16px;\n        }\n        iframe {\n            width: 80%;\n            height: 400px;\n            border: 1px solid #ccc;\n            margin-top: 20px;\n        }\n    </style>\n    <script>\n        let refreshInterval;\n\n        function startAutoRefresh() {\n            const url = document.getElementById('url').value;\n            const interval = document.getElementById('interval').value * 1000;\n            if (url && interval) {\n                document.getElementById('autoRefreshIframe').src = url;\n                if (refreshInterval) {\n                    clearInterval(refreshInterval);\n                }\n                refreshInterval = setInterval(() => {\n                    document.getElementById('autoRefreshIframe').src = url;\n                }, interval);\n            } else {\n                alert(\"Please enter a valid URL and interval.\");\n            }\n        }\n    </script>\n</head>\n<body>\n    <h1>Auto Refresh Iframe</h1>\n    <label for=\"url\">URL to refresh:</label>\n    <input type=\"text\" id=\"url\" placeholder=\"https://example.com\"><br>\n    <label for=\"interval\">Refresh interval (in seconds):</label>\n    <input type=\"number\" id=\"interval\" min=\"1\" step=\"1\"><br>\n    <button onclick=\"startAutoRefresh()\">Start Auto Refresh</button>\n    <iframe id=\"autoRefreshIframe\" src=\"\" frameborder=\"0\"></iframe>\n</body>\n</html>\n"
  },
  {
    "path": "nodepay_console.md",
    "content": "<h1 align=\"center\">Nodepay Konsol İle Yenileme</h1>\n    \n> Rivalz sunucumuza girip, Edge'yi açıyoruz.\n> Arama yerine aşağıdaki linkleri yapıştırıyoruz.\n> \n![nodepay1](https://github.com/ferdiyalcin/Rivalz/assets/108075007/87a0f49d-f21d-40e9-92b4-534716787559)\n\n> Nodepay : \n```\nextension://lgmpfmgeabnnlemejacfljbmonaomfmm/index.html\n```\n> Oasis :\n\n```\nextension://knhbjeinoabfecakfppapfgdhcpnekmm/index.html\n```\n\n> Ardından açılan sayfada F12'ye basıyoruz.\n> Open DevTools diyerek konsolu açıyoruz.\n> \n![nodepay2](https://github.com/ferdiyalcin/Rivalz/assets/108075007/e5b12f8f-d93d-40b7-9fa7-b06f0d3c4598)\n\n\n\n> Konsol kısmına yapıştırma izni vermek için aşağıdaki kodu yapıştırıyoruz ve Enter'a basıyoruz.\n```\nallow pasting\n```\n<!-- ![image](https://github.com/awelmisin/Rivalz/assets/73443933/72cb8fa9-4079-47f1-a41f-5b609cc4a3a1) -->\n\n> Bu kodu yapıştırıyoruz ve Enter'a basıyoruz.\n> > Not : Kodun yenileme süresi default olarak 5 dakika. `setInterval(updateIframe, 300000);` bu kısmı ms cinsinden düzenleyebilirsiniz.\n\n\n```\n// Mevcut body içeriğini iframe ile değiştirir ve her 5 dakikada bir yeniler\nfunction updateIframe() {\n  // Eski iframe'i kaldırır\n  const oldIframe = document.getElementById(\"testFrame\");\n  if (oldIframe) {\n    oldIframe.remove();\n  }\n\n  // Yeni iframe oluşturur ve ekler\n  document.getElementsByTagName(\"body\")[0].innerHTML = `\n    <iframe id=\"testFrame\" src=\"${window.location.toString()}\" style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\">\n    </iframe>\n  `;\n}\n\n// 5 dakikada bir (300000 milisaniye) updateIframe fonksiyonunu çalıştırır\nsetInterval(updateIframe, 300000);\n\n// İlk çalıştırma\nupdateIframe();\n```\n#\n>Yukarıdaki işlemleri aynı şekilde chrome'da yapabilirsiniz.\n\n> Nodepay : \n\n```\nchrome-extension://lgmpfmgeabnnlemejacfljbmonaomfmm/index.html\n```\n> Oasis :\n\n```\nchrome-extension://knhbjeinoabfecakfppapfgdhcpnekmm/index.html\n```\n\n`This page has been blocked by an extension` şeklinde uyarı geliyorsa, uzantıyı kapatıp açın.\n#\n>İşlemler bu kadardı. Sonrasında sayfayı o şekilde bırakıp bağlantıyı koparıyoruz.\n"
  },
  {
    "path": "oasis.sh",
    "content": "#!/bin/bash\n\napt update && apt upgrade -y\n\nsudo apt install nodejs npm -y\n\nnpm install axios readline-sync figlet ws\n\nmkdir oasis\n\ncd oasis\n\nwget https://raw.githubusercontent.com/ruesandora/Rivalz/main/update_token.js\n\nwget https://raw.githubusercontent.com/ruesandora/Rivalz/main/oasis_terminal.js\n\necho \"Kurulum tamamlandı, Repoya geri dönün ve sonraki adıma geçin\" "
  },
  {
    "path": "oasis_terminal.js",
    "content": "const WebSocket = require('ws');\nconst os = require('os');\nconst { execSync } = require('child_process');\nconst path = require('path');\nconst fs = require('fs');\nconst figlet = require('figlet');\n\n// Simple color function\nconst color = {\n    reset: \"\\x1b[0m\",\n    bright: \"\\x1b[1m\",\n    dim: \"\\x1b[2m\",\n    underscore: \"\\x1b[4m\",\n    blink: \"\\x1b[5m\",\n    reverse: \"\\x1b[7m\",\n    hidden: \"\\x1b[8m\",\n    \n    fg: {\n        black: \"\\x1b[30m\",\n        red: \"\\x1b[31m\",\n        green: \"\\x1b[32m\",\n        yellow: \"\\x1b[33m\",\n        blue: \"\\x1b[34m\",\n        magenta: \"\\x1b[35m\",\n        cyan: \"\\x1b[36m\",\n        white: \"\\x1b[37m\",\n    },\n    bg: {\n        black: \"\\x1b[40m\",\n        red: \"\\x1b[41m\",\n        green: \"\\x1b[42m\",\n        yellow: \"\\x1b[43m\",\n        blue: \"\\x1b[44m\",\n        magenta: \"\\x1b[45m\",\n        cyan: \"\\x1b[46m\",\n        white: \"\\x1b[47m\",\n    }\n};\n\n// Import the database module\nconst { database, updateDatabase, initDatabase } = require('./database');\n\nfunction formatMetrics(data) {\n    const { creditsEarned, totalUptime, networkPerformance } = data;\n    \n    const days = Math.floor(totalUptime / 86400);\n    const hours = Math.floor((totalUptime % 86400) / 3600);\n    const minutes = Math.floor((totalUptime % 3600) / 60);\n    \n    let uptimeString = '';\n    if (days > 0) uptimeString += `${days}d `;\n    if (hours > 0 || days > 0) uptimeString += `${hours}h `;\n    uptimeString += `${minutes}m`;\n    \n    const networkPercentileFormatted = (networkPerformance * 100).toFixed(0);\n    \n    return `Credits Earned: ${creditsEarned} | Provider Uptime: ${uptimeString} | Network Percentile: ${networkPercentileFormatted}%`;\n}\n\nfunction main() {\n    // Clear the console\n    console.clear();\n\n    // Use figlet to generate the ASCII art\n    const asciiArt = figlet.textSync('Oasis Terminal', { \n        font: 'Standard',\n        horizontalLayout: 'default',\n        verticalLayout: 'default'\n    });\n\n    console.log(`${color.fg.blue}${color.bright}${asciiArt}${color.reset}`);\n    console.log(`${color.fg.green}${color.bright}📡 Monitoring Oasis.ai${color.reset}`);\n    console.log(`${color.fg.cyan}👨‍💻 Created by: @dwtexe${color.reset}`);\n    console.log(`${color.fg.magenta}🔍 Starting Oasis Terminal script...${color.reset}`);\n\tconsole.log();\n\n    // Initialize the database\n    initDatabase();\n    console.log(`${color.fg.yellow}Database initialized.${color.reset}`);\n\n    // WebSocket connection\n    let socket;\n    let heartbeatInterval;\n    let settingsInterval;\n\n    const connectWebSocket = () => {\n        console.log(`${color.fg.cyan}Attempting to connect websocket...${color.reset}`);\n\n        if (database.token) {\n            if (socket && socket.readyState === WebSocket.OPEN) {\n                console.log(`${color.fg.green}WebSocket already connected.${color.reset}`);\n                return;\n            }\n\n            socket = new WebSocket(`wss://api.oasis.ai/websocket?token=${database.token}`);\n\n            socket.on('open', () => {\n                console.log(`${color.fg.green}${color.bright}WebSocket connection established.${color.reset}`);\n                updateDatabase({ stats: { status: 'active' } });\n                startHeartbeatInterval();\n                startSettingsInterval();\n            });\n\n            socket.on('close', (code) => {\n                console.log(`${color.fg.red}WebSocket closed with code ${code}.${color.reset}`);\n                clearHeartbeatInterval();\n                clearSettingsInterval();\n\n                if (code === 1000) {\n                    console.log(`${color.fg.yellow}Normal closure, updating database...${color.reset}`);\n                    updateDatabase({\n                        stats: { status: 'offline' },\n                        token: false,\n                    });\n                    return;\n                }\n\n                console.log(`${color.fg.yellow}Unexpected closure, updating status and attempting reconnection...${color.reset}`);\n                updateDatabase({ stats: { status: 'offline' } });\n                setTimeout(connectWebSocket, 2500);\n            });\n\n            socket.on('message', (data) => {\n                const message = JSON.parse(data);\n                console.log(`${color.fg.blue}${color.bright}Received WebSocket message:${color.reset} ${color.fg.yellow}==>${color.reset} ${color.fg.green}Type: ${message.type}${color.reset}`);\n                \n                if (message.type === 'serverMetrics') {\n                    const formattedMetrics = formatMetrics(message.data);\n                    console.log(`${color.fg.cyan}${formattedMetrics}${color.reset}`);\n                    console.log(`${color.fg.magenta}Updating database with server metrics...${color.reset}`);\n                    updateDatabase({ stats: { ...message.data } });\n                } else {\n                    console.log(`${color.fg.green}Data: ${JSON.stringify(message.data, null, 2)}${color.reset}`);\n                }\n                \n                console.log(`${color.fg.cyan}${'─'.repeat(70)}${color.reset}`);\n            });\n        } else {\n            console.log(`${color.fg.red}${color.bright}No token available. Cannot connect to WebSocket.${color.reset}`);\n        }\n    };\n\n    const sendMessage = (message) => {\n        if (!socket || socket.readyState !== WebSocket.OPEN) {\n            console.log(`${color.fg.red}Cannot send message. WebSocket is not open.${color.reset}`);\n            updateDatabase({ stats: { status: 'offline' } });\n            return;\n        }\n\n        try {\n            console.log(`${color.fg.blue}Sending message of type: ${message.type}${color.reset}`);\n            socket.send(JSON.stringify(message));\n        } catch (error) {\n            console.error(`${color.fg.red}${color.bright}Error sending message:${color.reset}`, error);\n        }\n    };\n\n    const startHeartbeatInterval = () => {\n        console.log(`${color.fg.yellow}Starting heartbeat interval...${color.reset}`);\n        heartbeatInterval = setInterval(() => {\n            console.log(`${color.fg.cyan}Sending heartbeat...${color.reset}`);\n            sendMessage({\n                type: 'heartbeat',\n                data: { status: database.stats.status },\n            });\n            \n            // Send settings data after heartbeat\n            sendSettingsData();\n        }, 60000);\n    };\n\n    const clearHeartbeatInterval = () => {\n        if (heartbeatInterval !== undefined) {\n            console.log(`${color.fg.yellow}Clearing heartbeat interval.${color.reset}`);\n            clearInterval(heartbeatInterval);\n            heartbeatInterval = undefined;\n        }\n    };\n\n    const startSettingsInterval = () => {\n        console.log(`${color.fg.yellow}Starting settings interval...${color.reset}`);\n\t\tconsole.log(`${color.fg.cyan}${'─'.repeat(70)}${color.reset}`);\n        settingsInterval = setInterval(() => {\n            sendSettingsData();\n        }, 120000);\n    };\n\n    const clearSettingsInterval = () => {\n        if (settingsInterval !== undefined) {\n            console.log(`${color.fg.yellow}Clearing settings interval.${color.reset}`);\n            clearInterval(settingsInterval);\n            settingsInterval = undefined;\n        }\n    };\n\n    const getCPUInfo = () => {\n        const cpus = os.cpus();\n        return {\n            archName: os.arch(),\n            features: cpus[0].model.split(' '),\n            modelName: cpus[0].model,\n            numOfProcessors: cpus.length,\n            processors: cpus.map(cpu => ({\n                usage: {\n                    idle: cpu.times.idle * 1000000,\n                    kernel: cpu.times.sys * 1000000,\n                    total: Object.values(cpu.times).reduce((a, b) => a + b, 0) * 1000000,\n                    user: cpu.times.user * 1000000\n                }\n            })),\n            temperatures: []\n        };\n    };\n\n    const getMemoryInfo = () => {\n        return {\n            availableCapacity: os.freemem(),\n            capacity: os.totalmem()\n        };\n    };\n\n    const getGPUInfo = () => {\n        try {\n            const gpuInfo = execSync('lspci | grep -i vga').toString();\n            const match = gpuInfo.match(/:\\s(.+)/);\n            return {\n                vendor: \"Unknown\",\n                renderer: match ? match[1].trim() : \"Unknown\"\n            };\n        } catch (error) {\n            console.error(`${color.fg.red}Error getting GPU info:${color.reset}`, error);\n            return {\n                vendor: \"Unknown\",\n                renderer: \"Unknown\"\n            };\n        }\n    };\n\n    const sendSettingsData = () => {\n        console.log(`${color.fg.cyan}Sending settings data...${color.reset}`);\n        const cpuInfo = getCPUInfo();\n        const memoryInfo = getMemoryInfo();\n        const gpuInfo = getGPUInfo();\n\n        const settingsData = {\n            type: \"settings\",\n            data: {\n                mostRecentModel: \"todo\",\n                userSettings: {\n                    schedule: {\n                        ...database.schedule,\n                        days: Array.from(database.schedule.days)\n                    },\n                    enabledModels: database.models.filter(model => model.status === 'available').map(model => model.name)\n                },\n                systemInfo: {\n                    cpuInfo,\n                    memoryInfo,\n                    gpuInfo\n                },\n                extensionVersion: \"0.1.0\",\n                chromeVersion: \"119\"\n            }\n        };\n\n        sendMessage(settingsData);\n\t\tconsole.log(`${color.fg.cyan}${'─'.repeat(70)}${color.reset}`);\n    };\n\n    console.log(`${color.fg.magenta}${color.bright}Main function started.${color.reset}`);\n    console.log(`${color.fg.cyan}${'─'.repeat(70)}${color.reset}`);\n    connectWebSocket();\n    console.log(`${color.fg.cyan}${'─'.repeat(70)}${color.reset}`);\n}\n\nconsole.log(`${color.fg.green}${color.bright}Script setup complete. Starting main function...${color.reset}`);\nmain();\n"
  },
  {
    "path": "rivalz-cli.md",
    "content": "# Rivalz Testnet CLI\n\nBu kılavuz, Rivalz istemcisini indirmek ve çalıştırmak için talimatlar ve komutlar sağlar.\n\n## Gereklilikler\n\n```\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash\nsource ~/.bashrc\n\nnvm install 20.0.0\nnvm use 20.0.0\n```\n\n## Yüklemeler\n\nÖncelikle kurulum yapacağımız sunucuda screen açıyoruz\n```\nscreen -S rivalz\n```\n\nCLI yüklemek için komutu çalıştıralım\n```bash\nnpm i -g rivalz-node-cli\n```\nRivalz'i çalıştırmak için komutu kullanalım ve EVM adresimizi ne kadar cpu ve ram kullanmak istediğimizi yazalım ve ayrıca depolama olarak ne kadar paylaşmak istediğimizi de girelim. Depolamada max gösterdiği total depolama olduğu için ne kadar boş yerimiz olduğunu göz önünde bulundurup yazalım.\n\n```\nrivalz run\n```\n\nKurulum başarılı olduysa aşağıdaki gibi bir ekran göreceksiniz\n\n![image](https://github.com/utkubayri/Rivalz/assets/83476028/b69b4c3a-64a8-4e02-bb9e-56a12aa07f76)\n\nCTRL + A + D ile screenden çıkabilirsiniz\n\n**Rivalz Dashboarddan client'i validate etmeyi unutmayın**\n\nBol puan kasmalar\n"
  },
  {
    "path": "snapshot-alma.md",
    "content": "# Başlamadan önce\n>  Windows Kurulu bir Serverınız olmalı, Ana repodan kurulumu yapın. Minimum Cpx11 sunucusunu seçin.\n\n### Serverlarınıza girin ve Windowsun kurulu olduğu sunucunun sağındaki 3 noktaya basın ardından Take snapshot butonuna basın\n![image](https://github.com/ruesandora/Rivalz/assets/76253089/037c3b59-a339-46c4-a580-6f667220305d)\n\n> Bu kısımda size fiyattan bahsediyor, yaklasık 10 GBlik bir snapshot olusturmus oluyoruz bunun maliyeti 0.11€/Aylık.\n> Create Buy now butonuna basıp onaylıyoruz, Snapshotun alınması 5 dakika sürüyor.\n\n### Servers kısmına dönün, Snapshots kısmına tıklayın ve ardından Snapshotun sağındaki 3 noktaya basın. Bu sefer Create new Server olanı seçin.\n![image](https://github.com/ruesandora/Rivalz/assets/76253089/c9bd8ef4-b8b5-442f-a316-7e5d7ca9b39c)\n\n\n> Sonrasında sizden sunucu özelliklerini belirlemenizi istiyor, Başlangıç seviyesi için CPX11i seçebilirsiniz size kalmış.\n>\n### Sunucu oluşturuldu, Uzakt Masaüstü Bağlantısı programı ile sunucunuza erişebilirsiniz\n> Kullanıcı Adı: Administrator\n> Şifre: Klonladığınız sunucunun windows şifresini girin. İşlem bu kadardı\n![image](https://github.com/ruesandora/Rivalz/assets/76253089/4a917b72-fe13-499b-99e9-7f706f344e46)\n"
  },
  {
    "path": "ubunturc.md",
    "content": "<h1 align=\"center\">Rivalz Client Linux CLI / Ubuntu </h1>\n\n> selams, ubuntu / linux CLI üzerinde nasıl RClient açabileceğinizi göstereceğim. Ben PoyrazHosting kullanıyorum, diğer hostlarda denemedim. Deneyen arkadaşlar PR atabilirler.\n> \n> ihtiyacınız olan şeyler, bir ubuntu 22.04 sunucusu (20.04 çalışır belki? denemedim.) ve MobaXTerm programı.\n> \n> hadi başlayalım.\n\n#\n<details>\n  <summary> <h1> Ubuntu Sunucu Kurulumu </summary> </h1>\n    <h1 align=\"center\">Sadece Ubuntu için geçerlidir</h1>\n    \n> Sunucuya bağlandığınızı farz ederek devam ediyorum.\n> Sunucu güncelleme, libfuse2 ve gereklilikleri yüklüyoruz.\n```\nsudo apt update -y && sudo apt upgrade -y\n```\n```\nsudo apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm-dev libnss3-dev libfuse2\n```\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/72cb8fa9-4079-47f1-a41f-5b609cc4a3a1)\n\n> ekran açalım.\n```\nscreen -S rivalz\n```\n\n> rivalz clienti indirelim.\n```\nwget https://api.rivalz.ai/fragmentz/clients/rClient-latest.AppImage\n```\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/c1393ff3-f43b-4b3b-8620-79db8c937b50)\n\n> indirdiğimiz dosyayı executable yapalım.\n```\nsudo chmod +x rClient-latest.AppImage\n```\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/cb35396c-4c4b-4f16-ad0a-ab7ed3ca0501)\n\n> dosyayı açalım.\n```\n  ./rClient-latest.AppImage --no-sandbox\n```\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/e556d8ba-64d0-4bf9-aec6-02beb0ae9fb4)\n> bir sorun çıkmaz ise karşınıza bu ekran gelecek.\n> \n> bundan sonra storage belirleyip, wallet girerek yapabilirsiniz. tebrikler! linuxda rclient açabiliyorsunuz artık.\n\n![image](https://github.com/awelmisin/Rivalz/assets/73443933/0ab8f196-0c17-44bc-b536-e1a25445357a)\n\n"
  },
  {
    "path": "update_token.js",
    "content": "const fs = require('fs').promises;\nconst path = require('path');\nconst axios = require('axios');\nconst readline = require('readline');\n\nconst rl = readline.createInterface({\n  input: process.stdin,\n  output: process.stdout\n});\n\nfunction question(query) {\n  return new Promise((resolve) => {\n    rl.question(query, resolve);\n  });\n}\n\nconst userAgents = [\n  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15',\n  'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0',\n  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36',\n  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Edg/91.0.864.54',\n  'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'\n];\n\nfunction getRandomUserAgent() {\n  return userAgents[Math.floor(Math.random() * userAgents.length)];\n}\n\nasync function login(email, password) {\n  const response = await axios.post('https://api.oasis.ai/internal/authLogin?batch=1', {\n    \"0\": { \"json\": { email, password } }\n  }, {\n    headers: {\n      'Content-Type': 'application/json',\n      'Accept': '*/*',\n      'Accept-Language': 'en-US,en;q=0.9,tr;q=0.8',\n      'Origin': 'https://dashboard.oasis.ai',\n      'Referer': 'https://dashboard.oasis.ai/',\n      'User-Agent': getRandomUserAgent()\n    }\n  });\n  return response.data[0].result.data.json;\n}\n\nasync function getExtensionToken(authToken, clientName) {\n  const response = await axios.post('https://api.oasis.ai/internal/authConnect?batch=1', {\n    \"0\": { \"json\": clientName }\n  }, {\n    headers: {\n      'Content-Type': 'application/json',\n      'Authorization': authToken,\n      'Accept': '*/*',\n      'Accept-Language': 'en-US,en;q=0.9,tr;q=0.8',\n      'Origin': 'https://dashboard.oasis.ai',\n      'Referer': 'https://dashboard.oasis.ai/',\n      'User-Agent': getRandomUserAgent()\n    }\n  });\n  return response.data[0].result.data.json;\n}\n\nasync function createDatabaseFile(token) {\n  const databaseContent = `const fs = require('fs').promises;\nconst path = require('path');\n\nlet database = {\n  version: 1,\n  token: \"${token}\",\n  stats: {\n    creditsEarned: 0,\n    networkPerformance: 0,\n    solvedTasks: 0,\n    status: \"active\",\n    totalEarnings: 0,\n    totalUptime: 0\n  },\n  models: [],\n  schedule: {\n    days: new Set([\"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\"]),\n    mode: \"all\",\n    startTime: \"10:00\",\n    stopTime: \"16:00\",\n    usage: \"maximum\"\n  },\n  system: {\n    gpuInfo: undefined\n  }\n};\n\nconst updateDatabase = async (updatedData) => {\n  const updatedDatabase = Object.assign({}, database);\n\n  if ('token' in updatedData) {\n    updatedDatabase.token = updatedData.token;\n  }\n  if ('models' in updatedData) {\n    updatedDatabase.models = updatedData.models;\n  }\n  if ('stats' in updatedData) {\n    updatedDatabase.stats = {\n      ...database.stats,\n      ...updatedData.stats,\n    };\n  }\n  if ('schedule' in updatedData) {\n    updatedDatabase.schedule = {\n      ...database.schedule,\n      ...updatedData.schedule,\n    };\n  }\n  if ('system' in updatedData) {\n    updatedDatabase.system = {\n      ...database.system,\n      ...updatedData.system,\n    };\n  }\n\n  await fs.writeFile(path.join(__dirname, 'database.json'), JSON.stringify(updatedDatabase, null, 2));\n\n  database = updatedDatabase;\n};\n\nconst initDatabase = async () => {\n  try {\n    const data = await fs.readFile(path.join(__dirname, 'database.json'), 'utf8');\n    database = JSON.parse(data);\n  } catch (error) {\n    await fs.writeFile(path.join(__dirname, 'database.json'), JSON.stringify(database, null, 2));\n  }\n};\n\nmodule.exports = {\n  database,\n  updateDatabase,\n  initDatabase,\n};`;\n\n  const dbPath = path.join(__dirname, 'database.js');\n  await fs.writeFile(dbPath, databaseContent, 'utf8');\n  console.log('database.js created and updated with new token');\n}\n\nasync function main() {\n  try {\n    const email = await question('Enter your email: ');\n    const password = await question('Enter your password: ');\n\n    console.log('Logging in...');\n    const authToken = await login(email, password);\n    console.log('Auth token:', authToken);\n\n    const clientName = await question('Enter client name: ');\n\n    console.log('Getting extension token...');\n    const extensionToken = await getExtensionToken(authToken, clientName);\n    console.log('Extension token:', extensionToken);\n\n    console.log('Creating database.js...');\n    await createDatabaseFile(extensionToken);\n    console.log('database.js created with new token');\n  } catch (error) {\n    console.error('Error:', error.message);\n  } finally {\n    rl.close();\n  }\n}\n\nmain();\n"
  },
  {
    "path": "znode.md",
    "content": "# Rivalz ZNODE Kurulumu\n\n## Gereklilikler\n\nNode.js ve npm kurulumu. Yüklü değilse kurulum yapın.\n\n```\ncurl -sL https://deb.nodesource.com/setup_20.x -o /tmp/nodesource_setup.sh\nsudo bash /tmp/nodesource_setup.sh\nsudo apt install nodejs\n\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash\nsource ~/.bashrc\nnvm install v20.10.0\nnvm use v20.10.0\nnpm install -g npm@latest\n```\n\n## Yüklemeler\n\nÖncelikle kurulum yapacağımız sunucuda screen açıyoruz\n\n```\nscreen -S rivalz\n```\n\nCLI yüklemek için komutu çalıştıralım\n\n```bash\n\nnpm i -g rivalz-znode-cli\n\n\n```\n\n## Delegate Node\n\nAlttaki kodu çalıştırın.\n\n```\nznode run\n\n```\n\nsize bir node id verecek. [ZNODE](https://znode.rivalz.ai/znode) sayfasına gidin. Cüzdan bağlantılarını yaptıktan sonra kaç tane node aldıysanız her birisi için ayrı NFT burada gözükecek. Adığınız NODE ID yi ilgili kısıma yazdıktan sonra Token Amount'a kaç znode çalıştıracağınızı yazıyorsunuz. Delegate diyip cüzdandan onay verin. Başarılı olduktan sonra terminale dönüp tekrar aşağıdaki kodu çalıştır.\n\n```\nznode run\n\n```\n\nCTRL + A D ile screenden çıkabilirsiniz.\n"
  }
]